java三大特性 多型

2021-08-09 13:28:03 字數 1926 閱讀 3704

<1>多型的產生:

在繼承關係下,把子類物件賦給父類物件。

<2>什麼是多型:

物件可以有多種形態。

animal a=null;

a=new dog();

a=new cat();

此時的變數a有兩種型別:

編譯型別:宣告物件變數的型別,animal,表示把物件看做什麼型別。

執行型別:物件的真實型別,dog()——>物件的真實型別。

編譯型別必須是執行型別的父類或相同

當編譯型別和執行型別不同時,多型就出現了。

<3>多型的前提:

可以是繼承關係(類和類),也可以是實現關係(介面和實現類),在開發中多型一般都指第二種

<4>多型的特點:

在執行時期會表現出具體的子類特徵(呼叫子類的方法)。

<5>多型的作用:

遮蔽不同子類物件之間的實現差異,從而寫出通用**達到通用程式設計,以適應需求的不斷變化。

多型時方法呼叫問題

前提:必須存在多型情況。

存在父類:surperclass;存在子類:subclass;方法:dowork;

————————

測試**:

surperclass s=new subclass();//多型

s.dowork();//???執行結果是什麼

情況一:dowork方法存在於surperclass中,不存在subclass中

//父類

class

surperclass

//子類

class

subclass

extends

surperclass

此時執行的結果:編譯通過,執行surperclass中的dowork方法。

順序:先從subclass中找dowork方法,找不到,再去父類中查詢。

情況二:dowork方法存在於surperclass和subclass中

//父類

class

surperclass

//子類

class

subclass

extends

surperclass

}此時執行的結果:編譯錯誤;

順序:編譯時期:在編譯型別(surperclass)中找有無dowork方法,找到,編譯通過;找不到,編譯錯誤。

情況三:dowork方法存在於surperclass和subclass中

//父類

class

surperclass

}//子類

class

subclass

extends

surperclass

}此時執行的結果:編譯通過;執行subclass中的dowork方法。

順序:在執行期間,呼叫執行型別(subclass)中的方法。

情況四:dowork方法存在於surperclass和subclass中,但dowork方法是靜態方法。

此時這種情況我們稱為隱藏,而不叫方法覆蓋.

//父類

class

surperclass

}//子類

class

subclass

extends

surperclass

}此時執行的結果:編譯通過;執行surperclass中的dowork方法。

靜態方法的呼叫只需要類即可。

如果使用物件進行呼叫靜態方法,其實使用的是物件的編譯型別來呼叫靜態方法。和物件無關。

java三大特性 多型(1)

定義 物件具有多種形態 型別traffictool traffictool new traffictool 父類的引用指向本身類物件 traffictool traffictool1 new bmw 父類引用指向子類物件 建立本類物件時,呼叫的方法為本類方法。建立子類物件時,呼叫的方法為子類繼承的或...

java三大特性之多型

多型 多型的概述 1 多型 事物的多種狀態,polymorphic 物件的多型性 同乙個物件,可能具有不同的名稱,同乙個物件,有不同的型別的引用指向它。本質 同乙個物體有不同的名稱和描述。型別的多型性 同乙個型別,可能具有不同的子類實現。同乙個型別引用,有不同的物件實現。本質 同乙個名字和描述,可以...

Java三大特性 封裝,繼承,多型

封裝的作用 1 封裝能夠減少耦合 2 類內部結構可以自由修改 3 對成員變數進行更精確的控制 例項 public class person在上面這段 中,把屬性定義成private私有的,只能在本類中訪問,其他類訪問不了。public class person public string getna...