C 裡的父類物件引用子類例項的理解

2021-06-09 04:19:04 字數 858 閱讀 5766

物件導向的多型

//父類可以引用子類物件。

//父類引用只能呼叫子類繼承父類的方法,父類引用不能呼叫子類獨有的方法。

people newpeople = new man("bilu");//如在「人類」類中引用乙個 「男人」例項

//子類引用不能直接賦值父類物件,除非將父類物件進行強制轉換

//編譯ok,執行異常

man newman = (man)new people("neddy");//但在「男人」類中不全是「人類」類   「人類」類中還有「女人」類

對於 people newpeople =new man ("");

people newpeople = new people("");他倆的比較是 你不能說男人他不是人,只不過定義變數時使用的介面不同而已。

例子:介面ia裡有方法: fa()

介面ib裡有方法: fb()

子類c實現(繼承)了介面ia,ib,並且子類自己定義了個方法fc(),則子類c就有:fa(),fb(),fc()三個方法

當子類c的例項objc被ia型別的引用指向的時候[ia objc = new c()或者(ia)objc],你可以呼叫到的是fa(),「通俗」的說objc這裡是ia型別的(實際上是c型別),而並不是c型別的,所以只能調ia的fa()

當子類c的例項objc被ib型別的引用指向的時候[ib objc = new c()或者(ib)objc],你可以呼叫到的是fb(),「通俗」的說objc這裡是ia型別的,而並不是(其實是)c型別的,所以只能調ib的fb()

當子類c的例項objc被c型別的引用指向的時候[c objc = new c()或者(c)objc],你可以呼叫到的是fa(),fb(),fc()

詳細學習底層的東西。

父類引用子類物件

父類引用子類物件 package test class fruit1 string get1 父類引用子類物件 如果父類的方法可以被重寫 靜態方法不能被重寫,因為它是隨著類的建立而存在於記憶體,只有乙份 並且已經重寫,那麼呼叫的是子類的方法 反之,則呼叫父類裡的方法 public class fru...

父類引用指向子類物件

要理解多型性,首先要知道什麼是 向上轉型 我定義了乙個子類cat,它繼承了animal類,那麼後者就是前者是父類。我可以通過 cat c new cat 例項化乙個cat的物件,這個不難理解。但當我這樣定義時 animal a new cat 這代表什麼意思呢?很簡單,它表示我定義了乙個animal...

父類引用指向子類物件

是多型的一種實現方式 這樣做使程式靈活性更好,若有多個子類,只需改變引用就能實現不同的功能,而不需要改變程式 父類 a 子類 a1,a2 a obj1 new a1 a obj2 new a2 如果a有乙個方法是show 子類實現了show 那麼obj1.show 就是第乙個子類的show obj2...