面向物件:封裝性、繼承性、多型性總結
文章目錄
一、封裝性
封裝性就是將物件內部的複雜性隱藏起來,只是對外部公開簡單的介面,便於外界呼叫,從而提高系統的可擴充套件性、可維護性。通俗的說,就是把該隱藏的隱藏起來,該暴露的暴露出來。
1.針對屬性的封裝性
將類的屬性設為私有的(private),並提供set或者get方法。此時,針對屬性就體現了封裝性。
2.針對方法的封裝性
不對外暴露的私有方法
3.許可權修飾符的大小關係
private < 預設 < protected < public
4.具體的許可權範圍
二、繼承性
1.繼承性的好處
①、減少了程式碼的冗餘,提高了程式碼的複用性
②、便於功能的擴充套件
③、為多型性的使用提供了前提
2.子類和父類的關係
①、一旦子類A繼承了父類B以後,子類A中就獲取了父類B中宣告的所有屬性和方法(特別的:父類中宣告為private的屬性或者方法,子類繼承父類以後,仍然認為子類繼承了父類中的私有結構,只是因為封裝性的影響,使得子類不能直接呼叫父類的私有結果。)
②、子類繼承父類以後,還可以宣告自己特有的屬性或者方法,用來實現功能的拓展。③、格式:class A extends B
注意點:
①、一個類可以被多個類繼承。
②、一個類只能有一個父類。
③、子類直接繼承的父類為:直接父類、 間接繼承的父類:間接父類(理解為爺爺類)。
三、多型性
1.多型性的理解
一個事物的多種形態
2.何為多型性
父類的引用指向子類的物件。
舉例:
Person p = new Man();
這對Man來說也叫做向上轉型
3.多型的使用
虛擬方法呼叫:有了物件的多型性之後,我們在編譯期,只能呼叫父類中宣告的方法,但是在執行期,我們實際執行的是子類重寫父類的方法。(多型對屬性不管用)
4.向下轉型
有了物件的多型性以後,記憶體中實際上是載入了子類特有的屬性和方法的,但是由於變數宣告為父類型別,導致編譯時,只能呼叫父類中宣告的屬性和方法。子類特有的屬性和方法不能呼叫。如何才能呼叫子類特的屬性和方法?使用向下轉型。
5.instanceof關鍵字
在向下轉型的過程中,有可能會出現 ClassCastException 的異常,所以在轉型之前,使用 instanceof來對該類進行判斷。
舉例:
if(a instanceof A){// 判斷物件a是否是類A的例項,如果是返回true 否則返回 false
A a = (A)a;//將物件a轉為類A的物件
}