多型 抽象類 介面

2022-08-26 04:33:12 字數 2003 閱讀 6157

1.多型的使用方式

父類引用指向子類物件 (同一型別的物件引用指向了不同型別的子類物件,具體方法的實現不同)

呼叫的方法需要是子類和父類都有的,但是執行的是子類的,就是執行醫生類覆蓋的(重寫的)eat方法

也就是所謂的:編譯看左邊,執行看右邊!

能夠呼叫什麼方法,取決於引用的型別,而方法中具體怎麼執行,要看被轉型的類具體實現

person p = new doctor();

p.方法()

當呼叫不同引數的方法的時候,有限型別更符合的方法進行呼叫。

而無論這個方法是繼承的還是本類所有的。

1、在多型中成員函式的特點:

在編譯時期:參閱引用型變數所屬的類中是否有呼叫的方法。如果有,編譯通過,如果沒有編譯失敗。

在執行時期:參閱物件所屬的類中是否有呼叫的方法。

簡單總結就是:成員函式在多型呼叫時,編譯看左邊,執行看右邊。

在多型中,成員變數的特點:

無論編譯和執行,都參考左邊(引用型變數所屬的類)。

在多型中,靜態成員函式的特點:

無論編譯和執行,都參考做左邊。

也就是說,向上轉型之後,呼叫方法只能夠呼叫父類中有的,而實現的時候,要去實現子類的方法體。

2.關鍵字instanceof的使用

接收父類型別的引數,判斷之後向下轉型,進行具體的方法呼叫

3.多型方法和成員呼叫的區別

4.多型型別轉型問題

5.抽象類

1)抽象方法必須為public或者protected(因為如果為private,final,則不能被子類繼承,子類便無法實現該方法),預設情況下預設為public。

2)抽象類不能用來建立物件;

3)如果乙個類繼承於乙個抽象類,則子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義為為abstract類。

6.介面

抽象類定義物件屬性規範,而介面定義的是物件的行為,乙個介面可以繼承其他介面,目的是實現其他介面中抽象方法的整合。

乙個類實現了這樣的介面之後,就必須實現這個介面的所有抽象方法和這個介面過的所有實現的抽象方法。

乙個類實現乙個介面後,可以利用多型的方式進行建立物件,

例如:介面型別 物件名 =new 實現類型別();

這種多型的方式和繼承一樣,呼叫的方法要看這個隊形引用被修飾成什麼型別,從而只能呼叫這個型別,也就是這個介面所具有的方法

多型 抽象類 介面

抽象類介面 什麼是多型?同乙個物件,在不同時刻表現出來的不同形態 1.有繼承 實現的前提 2.有方法的重寫 3.有父類引用指向子類物件 例 animal a new cat 成員變數訪問 父類中有的屬性,才能正常編譯 編譯看左邊 如子類也有相同屬性,訪問執行出來的是父類中的屬性值 成員方法訪問 父類...

多型 抽象類 介面

同一物件,在不同時刻表現出來的不同形態 多型的前提和實現 有繼承 實現關係 有方法重寫 有父類引用指向子類物件 多型中成員訪問特點 成員變數 編譯看左邊,執行看左邊 成員方法 便宜看左邊,執行看右邊 為什麼成員方法和成員變數的訪問不一樣呢?因為成員方法有重寫,而成員變數沒有 多型的好處和弊端 好處 ...

多型,抽象方法,抽象類,介面

向上轉型 使用父類型別的變數接收子類型別的物件 多型使用的方法和屬性都是子類和父類共有的內容,物件能夠呼叫的屬性和方法全部 於子類中的內容。子類獨有的方法和屬性是不能使用的 向下轉型 如果向上轉型後,需要呼叫子類獨有的方法和屬性時,就需要向下轉型,必須是先有向上轉型,才會有向下轉型。一般用insta...