-------------多態(tài)----------------- (1)面向?qū)ο笕蠛诵乃枷耄? 1、封裝 2、繼承 3、多態(tài) (2)多態(tài)定義:父類的引用指向子類的對(duì)象。 (3)引用指的是父類聲明的一個(gè)引用型變量,變量有: 1、成員變量 2、靜態(tài)變量 3、構(gòu)造方法的變量 4、普通方法的變量 5、聲明就用的變量 (4)變量的聲明一般來說需要三步:聲明數(shù)據(jù)類型 聲明變量名 賦值 但是嚴(yán)格來講為兩步:聲明數(shù)據(jù)類型 聲明變量名 (5)賦值有兩種情況:1、父類型聲明,賦值一個(gè)父類型的引用值 父類型聲明,賦值一個(gè)子類型的引用值 2、多態(tài) (6)里氏替換原則:能使用父類的地方,一定可以使用子類 (7)多態(tài)的概念: 編譯階段,將父類的屬性,生成屬性列表,編譯時(shí)綁定 運(yùn)行階段,將子類生成一個(gè)對(duì)象,子類也有自身屬性列表,運(yùn)行時(shí)綁定 程序運(yùn)行時(shí),通過父類的屬性去調(diào)用子類對(duì)象的屬性(特指成員方法) (8)具體調(diào)用:運(yùn)行階段 1、遍歷父類的屬性列表 2、遍歷子類的屬性列表 3、如果子類有相同,就調(diào)用子類的,沒有就調(diào)用父類的 4、如果父類沒有所指屬性,直接報(bào)錯(cuò),子類中不用去
public class Poly01{ public static void main(String[] args){ Big a = new Big(); a.eat();//輸出父類 Big b = new Small(); b.eat();//輸出子類 //b.happy();//報(bào)錯(cuò):找不到符號(hào) b.cry();//輸出父類 }}class Big{ public void eat(){ System.out.
多態(tài)發(fā)生的前提:有繼承關(guān)系的兩個(gè)類中(或說體系) 多態(tài)有兩種類型:1、向上轉(zhuǎn)型,這是從數(shù)據(jù)類型角度,把子類對(duì)象當(dāng)成父類來處理,可看作自動(dòng)類型轉(zhuǎn)換
2、向下轉(zhuǎn)型,強(qiáng)制類型轉(zhuǎn)換 自動(dòng)類型轉(zhuǎn)換:1、基本數(shù)據(jù)類型中,低精度向高精度 2、引用數(shù)據(jù)類型中,子類向父類強(qiáng)制類型轉(zhuǎn)換:1、基本數(shù)據(jù)類型中,高精度向低精度 2、引用數(shù)據(jù)類型中,子類向父類
public class Poly02{ public static void main(String[] args){ //---------向上轉(zhuǎn)型---------- Big a1 = new Small(); a1.eat();//輸出子類 //a1.happy();//找不到符號(hào) //向上轉(zhuǎn)型的缺點(diǎn):對(duì)丟失子類對(duì)象中特有的屬性 //---------向下轉(zhuǎn)型---------- //向下轉(zhuǎn)型是基于某個(gè)類的對(duì)象向上轉(zhuǎn)型后,才可向下轉(zhuǎn)型 Small a2 = (Small) a1; a2.happy();//輸出子類 a2.cry();//調(diào)用父類 a2.eat();//輸出子類 //---------instanceof-------- //運(yùn)算符:判斷當(dāng)前對(duì)象是不是某個(gè)類實(shí)例化而來的 Big a3 = new Tiny(); a3.eat(); //Small b2 = (Small) a3; //b2.happy();//編譯通過,但是java.lang.ClassCastException錯(cuò)誤 if (a3 instanceof Small){ Small b2 = (Small)a3; } System.out.println(a3 instanceof Small ); //為了避免java.lang.ClassCastException錯(cuò)誤,java引入了instanceof運(yùn)算符 //instanceof運(yùn)算符,其運(yùn)算結(jié)果是boolean; // if( 引用 instanceof 類型名)-->true/false }}以上就是我的理解.歡迎大家指導(dǎo)!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注