1. 程式人生 > >java第二章繼承

java第二章繼承

繼承(extends)面向物件三大特徵之一

類中有許多相同的屬性和方法,程式碼重複,如果需要修改涉及較多類修改量增多

將子類中共有的屬性和方法提取到父類,讓子類繼承父類,減少程式碼量,擴充套件性維護性,子類可通過super(構造方法)呼叫父類屬性,列super.sethealth(99)

重寫:

由來:當子類中的屬性和方法父類不能滿足時,則可以對父類的同名方法進行重寫(覆蓋)以滿足子類的需求

必須滿足的條件:重寫方法和被重寫方法的方法名相同,引數列表相同,返回值型別相同或是其子類,重寫方法不能小於被重寫方法的許可權(直接相同就行)

過載(overloading)和重寫(overriding)有什麼區別和聯絡?

答:過載涉及同一個類中的同名方法,要求方法名相同,引數列表不同,與返回值型別和修飾符無關。
重寫涉及的是子類和父類之間的同名方法,要求方法名相同、引數列表相同、返回值型別相同(或是其子類)、訪問修飾符不能嚴於父類。

子類運用super.方法名來呼叫父類被重寫的方法 | super出現在子類的方法和構造方法中,不是其他位置

super.屬性名(呼叫父類的屬性)   super.方法名(呼叫父類的方法 )   super(構造方法引數)  只能出現在子類的構造方法中

抽象類:

父類例項化物件沒什麼用處,限制父類例項化

抽象類和抽象方法的特點:

abstract修飾的類和方法成為抽象類和抽象方法

抽象類不能被例項化,抽象方法子類必須重寫

抽象類中可以有0到多個或全部都是抽象方法

抽象方法只有方法宣告,沒辦法實現,有抽象方法的類必須宣告為抽象類,子類必須重寫所有的抽象方法才能被例項化,否則這個子類還是一個抽象類

繼承條件下構造方法呼叫規則:

如果在子類的構造方法中沒有顯示呼叫父類有參的構造方法,則將執行父類的無參構造方法

如果子類的構造方法中通過super顯示呼叫父類的有參構造方法,則會執行父類的有參構造方法,不執行父類的無參構造方法

如果父類的構造方法中通過this顯示呼叫自身的其它構造方法,則應在相應構造方法中應用以上兩條規則

abstract和final關鍵字的運用

abstract用來修飾類和方法,不能用來修飾屬性和構造方法(abstract修飾的方法其類必須是抽象類,抽象方法子類必須重寫)

final用來修飾類,方法,和屬性,不能修飾構造方法(final修飾的類不能被繼承,final修飾的屬性和方法不能改動)