1. 程式人生 > 其它 >假期java自學-----類9(類特性2)

假期java自學-----類9(類特性2)

類的三大特性包括:封裝、繼承、多型
二、繼承
繼承關鍵字:extends
**1.含義:**多個類具有共同的屬性(成員變數)與行為(成員方法)的時候,將這些共同的部分抽取出來定義到一個公共的類中,其他及各類可以與這個公共的類形成繼承關係,從而在多個類中不需要重複定義公共部分!這個公共的類就是父類,也稱為超類或者基類,其他的類就是子類。子類可以直接訪問父類的非私有化成員變數,訪問父類的私有化成員變數可以使用super.get()方法。
**簡單的說:**繼承是類與類的一種關係,比較像集合中的從屬於關係。比如說,狗屬於動物。就可以看成狗類繼承了動物類,那麼狗類就是動物類的子類(派生類),動物類就是狗類的父類(基類)。在Java中是單繼承的,也就是說一個子類只有一個父類。
2.繼承的特點:
(1)子類比父類強大
(2)java是單繼承,不能進行多繼承。但是可以繼承多層子類(不建議繼承超過3層)
(3)子類繼承父類,但是對父類的成員變數是無法直接操作,只能通過父類繼承過來的setter和getter方法.
3.繼承的優點:
(1)減少程式碼量,能很好的提高複用率。
(2)使類與類之間存在繼承關係,是實現多型操作的前提。
4.繼承的缺點
繼承使得多個類之間具有了子父類關係,當一個類存在多個子類的時候,如果父類發生變化,那麼這些子類會跟著一同變化,造成類與類之間的“強耦合”關係!
5.繼承注意點
(1)不要僅僅為了獲取某個類的某個功能而去繼承這個類
(2)類與類之間要存在所屬關係,不能夠隨意繼承
6.何時使用繼承
(1)具有公共的屬性與行為操作的時候,提高複用性
(2)具有is–a的所屬關係的類與類之間
7.結論:
(1)執行構造方法建立物件完成物件的初始化時,先執行父類的構造,完成父類的初始化,再執行本類的初始化工作。
(2)第一次建立Phone(父)類,是直接繼承Object,而Object是jdk提供的工具類,自然不會有屬性,所以Object類只提供了無參的構造,在執行Phone方法時,無論是無參還是有參都會先執行父類Object的無參構造。
(3)但是對於Phone的子類Mobile,必須也要有自己的構造方法,由於構造執行的特性,對於無參構造,先執行了Phone的無參構造,對於有參構造,則先執行父類Phone的有參,然後才執行本類屬性sex的初始化。
(4)構造方法constructor中,無論是否顯式還是隱式呼叫super(),子類在建立物件呼叫時都會執行super();
(5)顯式呼叫構造是在需要通過父類的帶參構造來完成子類的帶參構造。例如Mobile類帶參構造中顯示呼叫的Super(brand,price,service)
(6)對於父類私有的屬性,即使子類繼承,但是在test.java中,子類是無法直接訪問的,在制定子類的帶參構造方法時,只能通過呼叫父類的帶參構造來完成。對於父類非私有的屬性,子類物件可以直接呼叫。
三、多型
含義:多型指的是物件的多種形態。
多型有兩種:引用多型和方法多型。繼承是多型的實現基礎。
java程式中定義的引用變數所指向的具體型別和通過該引用型別發出的方法在呼叫時不確定,該引用變數發出的方法到底呼叫哪個類的實現的方法,必須在程式執行期間才能決定.
1.多型存在的前提(多型的三要素)
A.必須有子類和父類,具有繼承或實現(繼承)
B.子類必須重寫父類的方法(重寫)
C.父類的引用變數指向子類的物件(向上轉型)
2.多型的優點
A.可替換性,多型對一存在的程式碼具有可替代性
B.可擴充性:增加的子類不影響已存在的類的特性的執行和操作
C.介面性:多型時超類通過方法簽名想子類提供了一個公共的介面,由子類來完善或者覆蓋它而實現的
D.靈活性:在應用中體現了靈活多樣的操作,提高了使用的效率
E.簡化性:多型簡化對應用軟體的程式碼的編寫和修改過程,尤其在處理大量的物件的運算和操作時,這個特點尤為突出和重要
3.多型的缺點
A.只能使用父類的引用訪問父類的成員
4.多型中的成員特點:
成員變數:編譯與執行時期都看父類!
成員方法:編譯時期看父類,執行時期看子類。