一文徹底搞懂父類引用指向子類物件問題

2021-10-02 18:10:11 字數 817 閱讀 6521

public

class

father

private

void

run(

)public

father()

public

static

void

main

(string[

] args)

}class

sonextends

father

public

void

sleep()

public

son(

)public

intgetage()

public

void

setage

(int age)

}

最終輸出的結果

f.eat()輸出的是子類中重寫父類中的eat()方法

f.run()輸出的是父類中的run()方法(實際上是輸出的子類中的,只是因為子類中沒有重寫,所以看上去輸出的是父類中的,實際呼叫的是子類的)

f.age和f.weigth輸出的是子類的構造方法中重新賦值的

f.name輸出的是父類中的屬性

由此可以看出,父類引用指向子類物件,最終這個父類引用所擁有的變數是是子類中的(如果構造方法中沒有重新賦值那就和父類中的一樣,如果重新賦值了那就是子類中賦值以後的),方法也是子類中的(如果重寫了就是重寫之後的方法,如果沒有重寫的那就和父類中的一樣)

父類引用指向子類物件

要理解多型性,首先要知道什麼是 向上轉型 我定義了乙個子類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...

父類引用指向子類物件

package fuleiyinyongzhixiang public class animal public void sleep package fuleiyinyongzhixiang public class person extends animal public void play pa...