一,继承
-
java三大特性之一(封装,继承,多态)。
-
继承就是子类继承父类的特征和和行为,使得子类对象(实例)具有父类的实例域和方法,还可以以此基础添加新方法和域来满足需求。
-
继承需要符合的关系是:is-a,父类更通用,子类更具体。
-
java不支持多继承,即一个子类只能拥有一个父类。
-
子类对象实例化时一定先实例化父类对象。
-
java中,所有继承都是公有继承,子类拥有父类非private属性和方法。
-
已存在类:父类,超类,基类,新生类:子类,派生类,孩子类。
二,案例(格式)
public class Employee{//添加方法和域}//子类继承父类public class Manager Employee{//添加方法和域}
三,方法覆盖,super关键字,子类构造器
-
超类中的有些方法对子类不一定适用,需要子类提供一个新的方法来覆盖超类中的这个方法:
//超类public class Employee{... public double getSalary(){ return salary; }}//子类,经理类不仅仅是返回工资 还有奖金的public class Manager extends Employee{... //覆盖超类的getSalary方法 public double getSalary(){ return salary+bonus; //不起作用 }}
上述覆盖是不起作用的,因为子类不能直接访问超类(员工类)的私有域,所以可以使用特定关键字super,以下是改进:
public double getSalary(){ return super.getSalary()+bonus;}
四,super,this关键字
-
this
一是引用隐式参数。
二是调用该类其他构造器。
- super
调用父类的方法。
调用父类的构造器。
通过super关键字来实现对父类成员的访问,用来引用当前对象的父类,super与this引用不是类似的概念,因为super不是一个对象引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字,super指向父类,this是指向自己的引用。
五,子类构造器
public Manager(String name,double salary,int year,int month,int day){ //子类调用父类构造器一定要放在语句最前面 super(name,salary,year,month,day); bonus = 0;}