帮助文档 <=> API文档 <=> 程序说明文档
姓名,年龄,工号
雇员类
普通员工类
经理类
abstract:抽象,即不具体,只能修饰类和方法,不能修饰变量等。
抽象方法:被abstract关键字修饰的方法,只有函数声明,没有函数体。
抽象类:被abstarct修饰的类。
形式上看,就是含有抽象方法的类,当然也可以一个抽象方法也没有,也可以将类修饰成抽象类,这样相当于禁止
该类创建类对象。
意义上看,抽象类是指,对抽象类所描述的事物在分析时,发现有一部分功能的功能内容是不确定的,但功能一定
存在。所以就将该部分功能定义成抽象方法,没有函数体,只有函数声明。
注意:抽象类不能用new创建对象。但可以声明该抽象类的引用变量。
抽象类被子类覆盖后,若子类想使用抽象类中的功能,则必须先覆写(覆盖)所有抽象方法,只有所有抽象方法都被覆盖
(覆写),才能够创建子类对象,来调用其中的方法,如果子类只覆盖(覆写)了一部分抽象方法,则子类也是一个抽象类
(即子类必须定义成一个抽象类,因为子类继承了父类,并且没有覆盖(覆写)所有的抽想方法,相当于子类中也存在一些
抽象的方法,所以子类必须定义成一个抽象类),若子类没有定义成抽象类,且没有覆盖(覆写)父类中的所有的抽象方法
,则编译会报错。
抽象类和一般类没有什么太大的区别,只有两点不同
1,抽象类中存在一些没有函数体,只有函数声明的方法。
2,抽象类不能创建实例,因为创建类对象后,引用没有函数体的方法没有意义。
抽象类和其他父类没有区别都是从子类上抽取而来,只不过,多个子类中的功能定义相同,功能内容不同,所以父类中没有
必要有方法体,就出现了抽象函数。抽象类虽不能创建对象,但是可以有构造方法和成员变量,成员函数,构造代码块,静态
代码块。和普通的父类没有什么区别,也可是使用多态技术,也可以使用super关键字进行访问。也存在覆盖(覆写)。也可
以直接拿过来用,继承了父类(抽象类)的方法,直接调用即可。
抽象类中的抽象方法,即被abstract修饰的方法,相当于强迫子类必须覆盖(覆写)该方法,否则就不能创建该子类对象。
final修饰方法刚好相反,是强制禁止覆盖(覆写)某一个方法。
*/
abstract class Employee { private String name; private int age; private String id; Employee(String name,int age,String id) { this.name = name; this.age = age; this.id = id; } public String getName() { return name; } public abstract void work(); } class Manager extends Employee { private int bonus; Manager(String name ,int age,String id,int bonus) { super(name,age,id); this.bonus = bonus; } public void work() { System.out.println("Manager work"); } } class Pro extends Employee { Pro(String name,int age,String id) { super(name,age,id); } public void work() { System.out.println("Pro work"); } } abstract class Ceo extends Employee { Ceo(String name ,int age ,String id) { super(name,age,id); } public void work() { System.out.println("Ceo work"); } }