abstract修饰的方法叫做抽象方法,抽象方法只有声明没有具体的实现(没有方法体);
abstract int abstractMethod(int a);
abstract修饰的类叫做抽象类;抽象类用来描述那些父类无法确定全部实现,而是由子类提供具体实现对象的类;
含有抽象方法的类叫做抽象类,抽象类可以有构造方法,但不能被实例化,是用来作为父类被子类继承的;
子类继承抽象类需要实现抽象类中的抽象方法,如果没有实现父类的抽象方法,那么子类也是一个抽象类;
抽象类不能用final修饰,final修饰的类不能被继承,而抽象类需要被继承才能使用其中的抽象方法;
抽象类:
public abstract class Employee {
String name;
int id;
double salary;
public Employee(){
}
public abstract void work();
}
这是一个抽象类,包括name和id两个变量,一个构造方法,和一个抽象的方法abstract。
class Manager extends Employee{
double bonus;
@Override
public void work() {
System.out.println("我是经理");
}
public void setManagerInfo(String name,int id,double salary,double bonus){
super.name = name;
super.id = id;
super.salary = salary;
this.bonus = bonus;
}
public void ManagerInfo(){
System.out.println(super.name);
System.out.println(super.id);
System.out.println(super.salary);
System.out.println(this.bonus);
}
}
这个子类继承了上面的抽象类,并且定义了一个新的变量bonus,重写了父类中的抽象方法。此外,还有setManagerInfo方法和ManagerInfo两个方法。
class CommonEmployee extends Employee{
@Override
public void work() {
System.out.println("我是普通员工");
}
public void setCommonEmployeeInfo(String name,int id,double salary){
super.name = name;
super.id = id;
super.salary = salary;
}
public void CommonEmployeeInfo(){
System.out.println(super.name);
System.out.println(super.id);
System.out.println(super.salary);
}
}
CommonEmployee c = new CommonEmployee();//测试
c.work();
c.setCommonEmployeeInfo("张三", 111, 1234);
c.CommonEmployeeInfo();
这是Employee的另一个子类。