父類引用指向子類物件 物件導向的多型

2022-07-01 08:22:34 字數 1071 閱讀 3643

先上**

package

com.fuzi.demo;

public

class

fuzi

}class

fulei

public

void

fun()

}class zilei extends

fulei

}

輸出如下

首先需要明白多型的定義:

1、使用父類型別的引用指向子類的物件;

2、如果子類重寫了父類的虛方法,那麼呼叫這個方法的時候,將會先呼叫子類的方法--動態呼叫/動態連線;

3、父類引用指向子類物件---也稱之為「上溯造型」,父類的方法稱之為「虛方法」,需要注意的是:方法是呼叫子類自己的(如果子類沒有才去呼叫父類的),屬性是呼叫父類的。

總結如下:

繼承、重寫、父類引用指向子類物件

順便說一下型別轉換的問題:

1、父物件=new 父類();

2、子物件=new 子類();

3、父物件=new 子類();

4、{父物件=new 子類();

子物件=(子類)父物件; //強制型別轉換

需要注意的是:

5、{父物件=new 父物件();

子物件=(子類)父物件;

5是不對的,

原因:在new乙個子類物件的時候,會在堆記憶體中申請空間來儲存子類物件,

另外,了解一下jvm初始化步驟:

1、假如這個類還沒有被載入和連線,則程式先載入並連線該類

2、假如該類的直接父類還沒有被初始化,則先初始化其直接父類

3、假如類中有初始化語句,則系統依次執行這些初始化語句

所以初始化子類的時候,父類會先被初始化。

子類繼承父類,他可能會比父類擁有更多的方法或者成員變數,子類轉換城父類屬於向上轉型,及多型。

在5中例項化的物件是父類,子類並沒有被分配空間,如果把父類的例項化物件強轉為子類,子類就是乙個空殼子,必然會造成型別轉換異常。

父類引用指向子類物件

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