一、定義
多型:某一類事務的多種存在形態。
例如:動物中的貓和狗。
//動物是貓和狗抽取出來的本質特性。
class animal
class cat extends animal
class dog extends animal
cat c=new cat();//建立乙個cat物件,型別是cat。
//貓也是動物的一種,我們可以把貓稱為動物。 父型別引用指向了子類物件。
animal a=new cat();//建立乙個cat物件,型別是animal。
class duotai
}
簡單說:就是乙個物件對應者不同的型別。
二、多型在**中的體現:
父類或者介面的引用指向其子類的物件。
animal a=new cat( );
三、多型的好處:
提高了**的擴充套件性,前期定義的**可以使用後期的內容。
四、多型的弊端:
前期定義的內容不能呼叫後期子類的特有內容。
五、 多型的前提:
1、必須有關係,繼承,實現。
2、要有覆蓋(重寫)
六、 型別轉換:
animal a =new cat( ); 自動型別提公升,貓物件提公升了動物型別。但是特有功能無法訪問。
作用就是限制對子類特有功能的訪問。
專業講:向上轉型。將子型別隱藏。就不用使用子類的特有方法。
如果還想使用具體動物貓的特有功能。你可以將該物件進行向下轉型。
cat c= new (cat)a; 向下轉型的目的是使用子類中的特有方法。
注意:對於轉型,自始自終都是子類物件在做著變化,要麼引用指向父類,要麼引用指向本類。
例如:animal a1=new dog( );
cat c1=new (cat)a1;
以上**編譯器會報異常,classcastexception 型別轉換錯誤。
注意:只有具有繼承關係的類之間才能發生轉換。
七、轉型的特點。
向上轉型:
1、 子類向上轉型為父類,提高了**的擴充套件性,可以傳很多物件進來。
2、 限制了子類的特有功能。
向下轉型:
1、可以使用子類的特有功能。
abstract class animal
class dog extends animal
void lookhome() }
class cat extends animal
void catchmouse() }
class pig extends animal
void gongdi() }
class duotaidemo
public static void method(animal a)//animal a = new dog();
else if(a instanceof dog)
else
} /*
public static void method(cat c)
public static void method(dog d)
*/ }
多型時成員的特點:
1、 成員變數:
編譯時:參考引用型變數所屬的類是否有呼叫的成員變數, 有,編譯通過, 沒有,編譯失敗。
執行時:參考引用型變數所屬的類是否有呼叫的成員變數, 並執行該所屬類中的成員變數。
2、成員函式(非靜態)。
編譯時:參考引用型變數所屬的類中是否有呼叫的函式。 有 編譯通過,沒有,編譯失敗。
執行時:參考的是物件所屬的類中是否有呼叫的函式。
簡單說:編譯看左邊,執行看右邊。
因為成員函式存在覆蓋特性。
3、靜態函式。
編譯時:參考引用型變數所屬的類中是否有呼叫的靜態方法。
執行時:參考引用型變數所屬的類中是否有調回用的靜態方法。
簡單說:編譯和執行都看左邊。
其實對於靜態方法,是不需要物件的。直接用類名呼叫即可。
class fu
static void method() }
class zi extends fu
static void method() }
class duotaidemo3
}
物件導向 多型
繼承是多型的基礎,是指物件的多種形態 1.引用的多型 1 父類的引用可以指向本類的物件 2 父類的引用可以指向子類的物件 注意 子類的引用不能指向父類的物件 2.方法的多型 1 建立本類物件時,呼叫的方法是本類的方法 2 建立子類物件時,呼叫的方法是子類重寫的方法或是繼承的方法 注意 如果是子類獨有...
物件導向 多型
多型可以簡單的概括為 乙個介面,多種方法 在程式執行過程中才決定呼叫的函式,簡單的說就是,允許將子類型別的指標賦值給父類型別的指標,賦值後,父類物件就可以根據當前賦給它的子類物件的特徵以不同的方式執行。容易混淆的兩個概念 是指允許存在多個同名的函式,而這些函式的參數列不同 或許引數個數不同,或許引數...
物件導向 多型
多型 可以理解為事物存在的多種體現形態。人 男人,女人 動物 貓,狗。貓 x new 貓 動物 x new 貓 1,多型的體現 父類的引用指向了自己的子類物件。父類的引用也可以接收自己的子類物件。2,多型的前提 必須是類與類之間有關係。要麼繼承,要麼實現。通常還有乙個前提 存在覆蓋。3,多型的好處 ...