更新時間:2021年05月18日17時02分 來源:傳智教育 瀏覽次數(shù):
在Java中,多態(tài)是指不同類的對象在調(diào)用同一個方法時所呈現(xiàn)出的多種不同行為。通常來說,在一個類中定義的屬性和方法被其他類繼承或重寫后,當(dāng)把子類對象直接賦值給父類引用變量時,相同引用類型的變量調(diào)用同一個方法所呈現(xiàn)出的多種不同形態(tài)。通過多態(tài),消除了類之間的耦合關(guān)系,大大提高了程序的可擴展性和可維護(hù)性。
Java的多態(tài)性是由類的繼承、方法重寫以及父類引用指向子類對象體現(xiàn)的。由于一個父類可以有多個子類,多個子類都可以重寫父類方法,并且多個不同的子類對象也可以指向同一個父類。這樣,程序只有在運行時程序才能知道具體代表的是哪個子類對象,這就體現(xiàn)了多態(tài)性。
在解了Java多態(tài)性的概念后,接下來通過一個案例來進(jìn)行演示說明,如文件1所示。
文件1 Example15.java
// 定義抽象類Animal abstract class Animal { abstract void shout(); // 定義抽象shout()方法 } // 定義Cat類繼承Animal抽象類 class Cat extends Animal { // 實現(xiàn)shout()方法 public void shout() { System.out.println("喵喵……"); } } // 定義Dog類繼承Animal抽象類 class Dog extends Animal { // 實現(xiàn)shout()方法 public void shout() { System.out.println("汪汪……"); } } // 定義測試類 public class Example15 { public static void main(String[] args) { Animal an1 = new Cat(); Animal an2 = new Dog(); an1.shout(); an2.shout(); } }運行結(jié)果如圖1所示。
圖1 運行結(jié)果
文件1中,首先定義了一個抽象類Animal和抽象方法,接著定義了兩個類Cat和Dog繼承了Animal,在第22~25行代碼中,分別創(chuàng)建了Cat和Dog兩個類對象同時指向一個父類對象,并調(diào)用shout()方法,程序在編譯時自動識別具體的子類對象,從而選擇性的調(diào)用對應(yīng)的方法,這就是Java中多態(tài)性的體現(xiàn)。由此可見,多態(tài)不僅解決了方法同名的問題,而且還使程序變的更加靈活,從而有效的提高程序的可擴展性和可維護(hù)性。
Java培訓(xùn)之java難點解析(九)-多態(tài)