Java中的多型 物件導向的第三特性

2021-08-19 22:44:20 字數 2721 閱讀 9003

引入:

package inheritance;

/*定義狗和貓,呼叫同乙個功能

*/class dog

public void do()

}class cat

public void catchmouse()

}public class multistatedemo

public static void doing(dog d)

public static void doing(cat c)

}public static void doing(dog d)

public static void doing(cat c)

}

//執行結果:dog is eating !!!!!                    cat is eating !!!!!

此段**的問題:

1.在dog 類和cat 類中都有eat這個方法,因此抽象提取這個方法,定義為animal——dog cat 都是animal中的一類因此是繼承

2.當寫其他動物類時要實現它們的吃這個功能,每寫乙個新的類建立物件呼叫時都要新寫乙個呼叫的函式解決辦法————使用多型

修改後的**:

/*

公共方法抽取,使用多型後的**

*/abstract classanimalclass dog extends animal

public void do()

}class cat extends animal

public void catchmouse()

}public class multistatedemo

public static void method(animal a)

}abstract classanimalclass dog extends animal

public void do()

}class cat extends animal

public void catchmouse()

}public class multistatedemo

public static void method(animal a)

}

//執行結果:dog is eating !!!!!

cat is eating !!!!!

【多型的用處】:提高**的擴充套件性(只要是對應的子類,父類都能操作)

【使用前提:類與類之間一定有明確的繼承/實現的關係,通常都有重寫】

【呼叫的是父類的方法,實現的是子類中的具體**】

多型定義:

【多型:就是物件的不同表現形式】

1.體現,父類(介面)的引用指向自己的子類

animal d=new dog(); //父類的引用指向子類

d的型別為animal 型別
dog d=new dog();      //自己這類的引用指向自己
d的型別:右邊為dog 型別,左邊為animal 型別(多型)

【多型的弊端】

只能呼叫公共(父類中)的方法(抽象出來的共性方法),當呼叫某個子類所具有的特殊方法時會發生呼叫混亂

【多型的轉型——關於子類特殊方法的呼叫】

animal d=new dog(); //父類的引用指向子類

1.父類的引用指向子類物件時,這就是讓子類的物件進行了型別提公升(向上提公升)——類似於基本資料型別的強制轉化(int a; double(a)----a 此時就是double 型。只能使用double 的性質)相同的此時物件的引用也只能引用父類的方法

2.由此產生問題:要呼叫子類的特有方法時怎麼辦?????

方法————向下轉型

animal d=new dog(); //父類的引用指向子類————————子類物件的型別提公升
dog d= (dog) d;     //將d型別強制轉化為dog 型別
無論是向上轉型還是向下轉型——都是子類的物件在做型別的轉換

【向下強制轉型的注意事項】

animal d = new dog();

cat c =(cat)d; //這樣的轉型是錯誤的

向下強制轉化的弊端:不知道向上轉型是的子類是哪乙個因此在向下強制轉型時會發生classcastexception(型別轉化錯誤)/

因此在轉化是要加入判斷,關鍵字:instanceof           一定要判斷型別

if ( d instanceof cat)
【多型轉化的總結】

1.什麼時候使用向上轉化————你是否要用子類的特殊內容?/不需要/——則使用向上轉化

2.什麼時候使用的向下強制轉化————你是否要用子類的特殊內容?/需要/——則使用向下強制轉化

注意:因為向下強制轉化不能確定子類,所以一定要判斷子類

Java物件導向 多型

歡迎光臨新長城部落格中心 物件導向 多型 多型的概述 某一類事物的多種存在的多種形態。1 多型的體現 父類的引用指向了自己的子類物件。父類的引用也可以接收自己的子類物件。2 多型的前提 必須是類與類之間有關係。要麼繼承,要麼實現。通常還有乙個前提 存在覆蓋。3 多型的好處 多型的出現大大的提高程式的...

java 物件導向多型

1 多型性 1 方法的過載和重寫 2 物件的多型性 2 物件的多型性 1 向上轉型 程式會自動完成 父類 父類物件 子類例項 2 向下轉型 強制型別轉換 子類 子類物件 子類 父類例項 3 案例 package csdn.zyl.demo class a12 public void tell2 cl...

Java物件導向 多型的好處

例如一段 class computer class pc extends computer class nb extends computer class test 此時就會有小夥伴有疑問,對於上面的程式,我這樣寫不也挺好嗎 pc pc new pc nb nb new nb pc.turnon n...