1. 程式人生 > 其它 >面向物件:封裝性、繼承性、多型性總結

面向物件:封裝性、繼承性、多型性總結

技術標籤:面向物件特性java

文章目錄


一、封裝性

封裝性就是將物件內部的複雜性隱藏起來,只是對外部公開簡單的介面,便於外界呼叫,從而提高系統的可擴充套件性、可維護性。通俗的說,就是把該隱藏的隱藏起來,該暴露的暴露出來。

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的物件
}