java之多型的使用

2021-09-08 20:26:37 字數 2736 閱讀 2637

首先,什麼是多型?我們應該從什麼角度來理解多型?其實,我們不妨把多型理解成一種事物的多種存在形態,比如,貓和狗都可以變成動物,而動物又可以變成貓和狗。

為了充分理解多型,我們可以從以下這幾個方面來理解多型。

一、從多型的體現方面:我們使用多型的時候,建立的是父類的引用,開闢的是子類的空間,由於沒有開闢父類的空間,所以是父類的引用指向子類物件,並不是真正的父類自己建立了物件,而且父類物件的引用還可以作為函式引數來接收子類物件哦!

二、多型實現的前提:必須是類與類之間要有關係,要麼繼承,要麼實現,存在覆蓋,其實就是有抽象函式。

三、從多型的好處:大大提高程式的可拓展性

四、多型的應用:1.父類物件的引用指向子類物件,其實本質上是乙個向上轉型,就像int轉成double一樣,兒子穿了一身爸爸的衣服,扮成了爸爸。2.但變成了爸爸之後,只能使用爸爸特有的技能,兒子怎麼能夠使用自己本身的技能呢?這時候就需要向下轉型,脫下偽裝,將父類物件的引用強轉成子類型別,就可以使用子類特有的技能了。

五、多型的弊端:提高了拓展性,但是只能使用父類的引用訪問父類的成員。

人:男人,女人

動物:貓,狗。

貓 x = new 貓();

動物 x = new 貓();

多型的體現

父類的引用指向了自己的子類物件。

父類的引用也可以接收自己的子類物件。

多型的前提

必須是類與類之間有關係。要麼繼承,要麼實現。

通常還有乙個前提:存在覆蓋。

多型的好處

多型的出現大大的提高程式的擴充套件性。

多型的弊端:

提高了擴充套件性,但是只能使用父類的引用訪問父類中的成員。

多型的應用

/*

動物,貓,狗。

*/abstract

class

animal

class

catextends

animal

public

void

catchmouse()

}class

dogextends

animal

public

void

kanjia()

}class

pigextends

animal

public

void

gongdi()

}//-----------------------------------------

class

duotaidemo

public

static

void

function

(animal a)

/* public static void function(cat c)//

public static void function(dog d)

public static void function(pig p)

*/}

人:男人,女人

動物:貓,狗。

貓 x = new 貓();

動物 x = new 貓();

多型的體現

父類的引用指向了自己的子類物件。

父類的引用也可以接收自己的子類物件。

多型的前提

必須是類與類之間有關係。要麼繼承,要麼實現。

通常還有乙個前提:存在覆蓋。

多型的好處

多型的出現大大的提高程式的擴充套件性。

多型的弊端:

雖然提高了擴充套件性,但是只能使用父類的引用訪問父類中的成員。

多型的應用

多型的出現**中的特點(多型使用的注意事項)

第二個問題:如何使用子類特有方法。

/*

動物,貓,狗。

*/class

catextends

animal

public

void

catchmouse()

}class

dogextends

animal

public

void

kanjia()

}class

pigextends

animal

public

void

gongdi()

}//-----------------------------------------

class

duotaidemo2

public

static

void

function

(animal a)

else

*/if(a instanceof

cat)

else

if(a instanceof

dog)

/* instanceof : 用於判斷物件的型別。 物件 intanceof 型別(類型別 介面型別) */

}}

java學習之多型

向上轉型是不需要進行強制型別轉換的,但是向上轉型會丟失精度。與向上轉型對應的乙個概念就是 向下轉型 所謂向下轉型,也就是說父類的物件可以轉換為子類物件,但是需要注意的是,這時則必須要進行強制的型別轉換。類似於人壓彈簧 一 向上轉型可以自動完成 二 向下轉型必須進行強制型別轉換。可以用instance...

Java學習之多型

原帖 多型 晚繫結。不要把函式過載理解為多型。因為多型是一種執行期的行為,不是編譯期的行為。多型 父型別的引用可以指向子型別的物件。比如 parent p new child 當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤 如果有,再去呼叫子類的該同名方法。注意此處,靜態...

Java學習之多型

多型 晚繫結。不要把函式過載理解為多型。因為多型是一種執行期的行為,不是編譯期的行為。多型 父型別的引用可以指向子型別的物件。比如 parent p new child 當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤 如果有,再去呼叫子類的該同名方法。注意此處,靜態sta...