/**
*
* @author jack
* 抽象类不能实例化对象;
* 抽象包含了子类集合的常见的方法,但是由于抽象类本身是抽象的,所以不能使用这些方法;
*
* 抽象方法
* abstract关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体;
* 抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号;
*
* 如果一个类包含抽象方法,那么该类必须是抽象类;
* 继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类;
*
* 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类;
* 构造方法,类方法(用static修饰的方法)不能声明为抽象方法;
*
* abstract关键字不能与final、static、private这三个关键字同时修饰一个方法;
*/
public abstract class Employee {
private String name;
private String address;
private int number;
public Employee() {
super();
}
public Employee(String name, String address, int number) {
super();
System.out.println("Employee 构造函数");
this.name = name;
this.address = address;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
@Override
public String toString() {
return "Employee [name=" + name + ", address=" + address + ", number=" + number + "]";
}
public abstract double computePay();
}
/**
*
* @author jack
* 任何子类必须重写父类的抽象方法,或者声明自身为抽象类;
*/
public class Salary extends Employee {
@Override
public double computePay() {
// TODO Auto-generated method stub
return 0;
}
}