類的封裝繼承與多態

類的封裝繼承與多態

類的封裝
可以用private來封裝類的屬性和方法。一般來說設計較好的程序的類中的屬性都是需要封裝的。此時需要設置或取得屬性值,則只能通過setXxx()、getXxx()方法,這是有個,明確且標準的規定。

類的繼承
對於面向對象的程序而言,精華在於類的繼承可以以既有的類爲基礎,進而派生出新的類。
在Java中支持類的單繼承和多層繼承,但不支持多繼承,即一個類只能繼承一個類,而不能繼承多個類。
繼承的格式如下:class 子類名 extends 父類
子類不能繼承父類的私有屬性,但是如果子類中公有的方法影響到了父類的私有屬性,那麼私有屬性是能夠被子類使用的。或者說:Java繼承只能直接繼承父類的公有屬性和方法,而隱含(不可見的)繼承了私有屬性。

super關鍵字的使用
super主要的功能是完成子類調用父類中的內容,也就是調用父類中的屬性和方法。
(1)調用父類中的構造方法“super(“張三”,25)”此時只能放在第1行。
(2)調用父類中的屬性:super.父類中的屬性。
(3)調用父類中的方法:super.父類中的方法()。

覆寫:當一個子類繼承一個父類,而子類中的方法與父類中的方法的名稱、參數個數、類型都一致時,就稱子類中的這個方法覆寫了父類中的方法。同理,如果子類中重複定義了父類中的已有的屬性,則稱此子類中的屬性覆寫了父類中的屬性。

類的多態
重載的最終效果就是調用同一個方法名稱,卻可以根據傳入參數的不同而得到不同的處理效果。是多態的一種體現。
對象的多態性:即子類實例化對象可以轉換爲父類實例化對象。

類的多態實例
1、向上轉型
父類對象通過子類對象去實例化,實際上就是對象的向上轉型。向上轉型不需要進行強制類型轉換的,但是向上轉型會失去精度。
2、向下轉型
父類的對象可以轉換爲子類對象,這時必須進行強制的類型轉換。
例子:
將跑車說成車就是向上轉型,失去細節。
將車說成跑車就必須增加細節,所以需要進行強制的說明。
所以向上轉型可以自動完成,向下轉型必須進行強制類型轉換。
注:並非全部的父類對象可以強制轉換爲子類對象。
Person p = new Person();
//將p對象向下轉型
Student s = (Student)p;
這樣會報錯,因爲p不知道s是不是自己的子類對象。
將Person p = new Person();修改爲Person p = new Student();
相當於用子類實例化父類,這樣父類就知道自己有這麼一個子類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章