天天看點

三大特性繼承

什麼叫繼承

繼承就是抽取不同的類共有的功能和屬性把他們定義為一個類,并且讓其他的類繼承這個類,就可以得到這個類所有的共有内容。這個類被叫做父類(超類),而其它的類被叫做子類。

在Java中繼承的局限性

1.java隻能單繼承

           單繼承是指:一個類繼承另一個類。

2.java不能多繼承,因為多繼承存在不确定性。

            多繼承是指:一個類同時繼承了多個類。

例如class A extends B,C(){

}這是不被允許的。

解決java單繼承的局限性:

1.進行多重繼承(多層繼承)

2.進行多實作(接口)

繼承子父類間成員屬性的特點:

1.有父類成員屬性,無子類成員屬性,用父類的

2.有子類,無父類用子類的。

3.若有相同成員變量,既有父類又有子類依據就近原則,用子類的

4。父類子類存在同名成員變量,如果想要調用父類成員變量,則用super可以直接調用,如果想要調用子類可以直接寫成員變量名字或者用this調用。這樣可以利用super和this進行區分子父類變量。

super:

super不是用來代表父類對象的,super是一個子類對象中一塊表示繼承父類的成員空間。

super不能出現在靜态方法中。因為super時在子類對象開辟的一個繼承父類的成員空間。

1.用于區分子父類同名成員,被super辨別的就是子類繼承父類的。

2.super(參數清單)表示的是父類構造器,但是如果用super調用構造器一定得放在子類構造器第一句。

繼承子父類間成員方法的特點:

1.有父類方法,無子類方法,用父類

2.無父類方法,有子類方法,用子類

3.既有父類又有子類方法并且方法完全相同,則子類方法覆寫(重寫)父類方法。

4.如果說子父類間有方法被重寫,則用this或者沒有任何辨別的是子類覆寫父類後的方法,如果用super辨別的則是父類方法。

方法的重載:overload

方法重載:方法名相同,方法的參數清單不同(數量,前後順序,參數資料類型),當然跟傳回值類型無關。

方法的重寫:override

方法重寫:首先要有父類,其次父類其中方法和子類方法完全相同(方法名,傳回值類型,參數清單等),子類的方法作用範圍要比父類的方法作用範圍大。

繼承子父類間構造器的特點

1.子類構造器調用父類構造器時,super()必須要在子類構造器的第一句。

2.父類中構造器隻寫了帶參構造時候,預設的無參構造便不在提供了,如果子類中再次調用父類構造隻能調用帶參,super(參數清單),如果直接寫super();則會報錯因為父類已經沒有無參構造了。

3.在構造器中this和super不能同時使用,因為this和super用他們來調用構造器都必須放在構造器中的第一句,如果同時使用就會報錯。

解決方案:讓建立對象的構造器不要調用super,用它調用本類的重載的構造器,讓重載構造器調用父類構造器,這樣就可以了。

子類繼承父類的成員除了私有都可以繼承(包括靜态)。(也就是不能直接通路私有)

如何通路父類私有呢?(間接通路)

在父類中給出公共通路方式如:get/set

final關鍵字 :是個修飾符,可以修飾成員變量,成員方法,類。

1.final所修飾的變量後無法被改變(被稱為常量)。

2.final所修飾的成員方法無法被重寫。

3.final所修飾的類是無法被繼承的。

4.被final修飾的變量的指派方式

      1>.在聲明的同時進行初始化值。

      2>.先聲明在構造器初始化對象的時候也可以進行初始化值。

5.常量名一般都是大寫。

     一般常量都被定義為類變量,因為定義完final數值不再改變。而且可以随着類加載而加載,生命周期延長,類不銷毀便一直存在,将其稱為全局變量。