物件引用實際上就是乙個指標,父類的引用可以指向乙個子類例項的。但是這個引用是不能呼叫子類擴充套件的方法的。
比如:class a{
void f(){
class b extends a{
void f1(){
a a = new (b);
a.f1();//編譯不通過,因為物件a是沒有f1()方法的。
(b)a.f1(); //編譯時可以通過的,因為通過強制轉換已經把a轉換成b物件的引用
if(ainstanceofb) //可以提前判斷
(b)a.f1();
a a1 = new a();
(b)a1.f1(); //編譯可以通過,但是執行會出錯。因為a1就只是乙個指向父類a的引用,是不能轉換為b的
子類的引用是不能指向父類例項的。因為父類例項是不能提供子類擴充套件的方法的。
b b1= new a(); //這是編譯不過的
父類引用子類物件
父類引用子類物件 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...