JAVA(十三)java面向對象7-多態
首先,什麼是多態?
多態是同一個行爲具有多個不同表現形式或形態的能力。
多態性是對象多種表現形式的體現。
多態分兩種:
(1)、編譯時多態(設計時多態):方法重載。
(2)、運行時多態:JAVA運行時系統根據調用該方法的實例的類型來決定選擇調用哪個方法則被稱爲運行時多態。(我們平時說得多的是運行時多態,所以多態主要也是指運行時多態)
多態的前提
1、類與類之間有關係,繼承或者(接口)實現
2、要有重寫;
3、父類引用指向子類對象。
例子:
class Father {
void method1() {
System.out.println("這是父類1");
}
void method2() {
System.out.println("這是父類2");
}
}
class Son extends Father {
void method1() {
System.out.println("這是子類1");
}
void method3() {
System.out.println("這是子類3");
}
}
class Demo {
public static void main(String[] args) {
Father f = new Son();
f.method1(); // 這是子類1
f.method2(); // 這是父類2
// f.method3(); //編譯報錯。
// 多態弊端,只能使用父類引用指向父類成員。
// 類類型轉換
Son s = (Son) f;
s.method3();
System.out.println();
}
}
多態的弊端:只能使用父類引用指向父類成員。
多態的好處:
1.可替換性(substitutability)。多態對已存在代碼具有可替換性。例如,多態對圓Circle類工作,對其他任何圓形幾何體,如圓環,也同樣工作。
2.可擴充性(extensibility)。多態對代碼具有可擴充性。增加新的子類不影響已存在類的多態性、繼承性,以及其他特性的運行和操作。實際上新加子類更容易獲得多態功能。例如,在實現了圓錐、半圓錐以及半球體的多態基礎上,很容易增添球體類的多態性。
3.接口性(interface-ability)。多態是超類通過方法簽名,向子類提供了一個共同接口,由子類來完善或者覆蓋它而實現的。如圖8.3 所示。圖中超類Shape規定了兩個實現多態的接口方法,computeArea()以及computeVolume()。子類,如Circle和Sphere爲了實現多態,完善或者覆蓋這兩個接口方法。
4.靈活性(flexibility)。它在應用中體現了靈活多樣的操作,提高了使用效率。
5.簡化性(simplicity)。多態簡化對應用軟件的代碼編寫和修改過程,尤其在處理大量對象的運算和操作時,這個特點尤爲突出和重要。
實際運用:
結合配置文件的使用,聯繫Spring框架,利用反射,動態的調用類,同時不用修改源代碼,直接添加新類和修改配置文件,不需要重啓服務器便可以擴展程序。