一,繼承
-
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; }