多型是物件導向的第三大特性(封裝、繼承、多型),用以描述現實世界中同一事物的不同形態。比如, 西服、t恤和夾克都繼承至『衣服』,它們都是衣服的一種形態。
多型的三個條件:
子類繼承父類
子類重寫父類方法
向上轉型
此外還有抽象類的多型和介面的多型
子類繼承父類(有靜態和非靜態方法分別輸出靜態和非靜態變數,子類對兩個變數重新賦值,方法重寫)使用向下轉型建立物件,這個物件直接獲取兩個變數和方法分別輸出什麼。如下所示:
public
class
person
static
void
staticmethod()
}public
class
sonextends
person
static
void
staticmethod()
}// 以下**分別輸出什麼
person p =
newson()
;system.out.
println
(p.str);p.
method()
;system.out.
println
(p.staticstr);p.
staticmethod()
;
輸出為:ab
statica
statica
首先 子類物件賦給父類型別變數,使用父類變數,那麼呈現出來的是父類的屬性和方法。
其次 子類重寫方法後,那麼呼叫的方法就是子類的方法了。
再次 子類會繼承父類屬性,並能對父類屬性修改,但是他們依然是兩套屬性了(要初始化子類必須先初始化父類,父類有一套自己的屬性,子類繼承後,如果不修改就有一套一樣的屬性)。
最後 靜態屬性和方法屬於類而不屬於具體的某個例項,使用某個例項呼叫靜態方法屬性就是呼叫的例項所屬類的方法和屬性。
多型面試題
題目的 如下 class a public string show a obj class b extends a public string show a obj class c extends b class d extends b a a1 new a a a2 new b b b new b...
C 多型面試題
答 多型是物件導向的重要特性之一,它是一種行為的封裝,是同一種事物所表現出的多種形態,簡單地說是 乙個介面多種實現 有兩種型別的多型性 編譯時的多型性。編譯時的多型性是通過過載來實現的。執行時的多型性。執行時的多型性是通過虛成員實現的。1.從儲存空間角度。虛函式對應乙個vtable,這個vtable...
多型相關面試題
多型 同樣的呼叫語句有多種不同的表現形態 同樣乙個函式在不同的子類 父類中穿梭的時候表現出不同的形態。有繼承 有virtual重寫 有父類指標指向子類物件。是通過虛函式重寫實現。virtual關鍵字,告訴編譯器這個函式要支援多型 不是根據指標型別判斷如何呼叫 而是要根據指標所指向的實際物件型別來判斷...