您的位置:首页 > 编程语言 > Java开发

java基础之抽象和接口

2014-11-02 00:45 323 查看
1、 instanceof 这是一个运算符,只能够返回 true 或者 false

用法:
x instanceof y
判断 x 是否为 y 的一个实例

2、抽象 abstract :1) 任何类都可以抽象

2)空类抽象作为标识类

3)类中有一个抽象方法,该类必为抽象类

4)抽象类不能实例化

5)抽象类通过继承来实现

6)抽象类可以包含非抽象的方法

7)静态、构造方法不能抽象

用法:

abstract class 类名{
abstract    返回值类型  方法名(参数列表);//  因为是抽象方法不能实现,不能再参数列表之后写入语句块 { }
}


下面讲述一个例子来帮助理解:

abstract class Employee{	//Employee 为一个抽象类
private String name;	//私有属性
private String number;
public Employee(){	}	//无参构造方法,当你重新写入了一个有参构造方法,一定要再写一个无参的,防止覆盖
public Employee(String name,String number){	//有参构造方法
this.name=name;
this.number=number;
}
public String  getName(){
return name;
}
public String  getNumber(){
return number;
}
public abstract double earnings();
public String toString(){
return "姓名:"+name+"\t社保号码"+number;
}
}


下面是月薪雇员 和 时薪雇员 对抽象父类的继承和实现
class SalariedEmployee extends Employee{ //继承了Employee 抽象类
private double weeklysalary;
public SalariedEmployee(){	}
public SalariedEmployee(String name,String number,double weeklysalary){
super(name,number);	// name 和 number 都是继承父类 Employee 的属性
setWeeklysalary( weeklysalary);
}
public void setWeeklysalary(double weeklysalary){
if(weeklysalary>100){
this.weeklysalary=weeklysalary;
}else{
this.weeklysalary=100;
}
}
//下面是对抽象类中的 earnings 和 toString 方法的重写
public double earnings( ){
return weeklysalary;
}
public String toString(){
return super.toString()+"\t月薪:"+weeklysalary;
}

}

class HourlyEmployee extends Employee{  //继承了Employee 抽象类
private int hours;
private double wage;
public HourlyEmployee(){	}
public HourlyEmployee(String name,String number,int hours,double wage){
super(name,number);
setHours(hours);
this.wage=wage;
}
public void setHours( int hours ){
if(hours>48){
this.hours=hours;
}else{
this.hours=48;
}
}
public void setWage( double wage ){
if(wage>10){
this.wage=wage;
}else{
this.wage=10;
}
}
//下面是对抽象类中的 earnings 和 toString 方法的重写
public double earnings(){
if(hours>40){
return 40*wage+(hours-40)*wage*1.5;
}else{
return 40*wage;
}

}
public String toString(){
return super.toString()+"\t时新:"+earnings();
}

}


测试类比较简单,大家可以自己试着写写,本人写的简单源代码也有上传。四个类全部在同一文件中,所以上述三个类都没有 public 权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: