java多態
多態是繼封裝、繼承之後,面向對象的第三大特性。
什麼是多態呢?
- 多態: 是指同一行爲,具有多個不同表現形式
在生活中我們每個個體吃東西,象 松鼠、兔紙…我們吃的樣子是不同的。可見,同一行爲,通過不同的事物,可以體現出來的不同的形態。多態,描述的就是這樣的狀態。
實現多態的必要條件:
- 繼承或者實現(接口)【二選一】
- 方法的重寫【意義體現:不重寫,無意義】
- 父類引用指向子類對象【格式體現】
實現::
多態的格式:
父類類型 變量名 = new 子類對象;//父類類型:指子類對象繼承的父類類型,或者實現的父接口類型
變量名.方法名();
注意:
當使用多態方式調用方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;如果有,執行的是子類重寫 後方法。
e:
public abstract class Fu {
public abstract void fly();
}
public class Zi extends Fu{
@Override
public void fly() {
System.out.println("飛向天空");
}
}
class Zi1 extends Fu{
@Override
public void fly() {
System.out.println("飛向地面");
}
}
public class Test {
public static void main(String[] args) {
Fu f1 = new Zi();
f1.fly();
Fu f2 = new Zi1();
f2.fly();
}
}
多態的優點:
實際開發的過程中,父類類型作爲方法形式參數,傳遞子類對象給方法,進行方法的調用,更能體現出多態的擴展 性與便利。
引用類型轉換
多態的轉型分爲向上轉型和向下轉型
- 向上轉型:多態本身是子類類型向父類類型向上轉換的過程,這個過程是默認的
當父類引用指向一個子類對象時,便是向上轉型。
使用格式:父類類型 變量名 = new 子類類型(); 如:Animal a = new Cat();
- 向下轉型:父類類型向子類類型向下轉換的過程,這個過程是強制的。
一個已經向上轉型的子類對象,將父類引用轉爲子類引用,可以使用強制類型轉換的格式,便是向下轉型。
使用格式:子類類型 變量名 = (子類類型) 父類變量名; 如:Cat c =(Cat) a;
爲什麼要轉型
當使用多態方式調用方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤。也就是說,不能調用子類擁 有,而父類沒有的方法。編譯都錯誤,更別說運行了。這也是多態給我們帶來的一點"小麻煩"。所以,想要調用子 類特有的方法,必須做向下轉型。