1.可替代性。多態可以替換現有的代碼。例如,多態適用於Circle類,也適用於任何其他圓形幾何圖形,如環。
2.擴展性。多態可擴展到代碼。添加新的子類不影響已有類的多態、繼承和其他特性的操作。事實上,通過添加子類更容易得到多態函數。比如在實現圓錐體、半圓錐體、半球體多態性的基礎上,增加球體的多態性就很容易了。
3.界面能力。多態性是由超類通過方法簽名向子類提供* * *接口來實現的,方法簽名由子類完善或覆蓋。如圖8.3所示。圖中的超類形狀指定了兩個實現多態性的接口方法,computeArea()和computeVolume()。子類,如Circle和Sphere,為了實現多態,對這兩個接口方法進行了改進或覆蓋。
4.靈活性。在應用中體現了靈活多樣的操作,提高了使用效率。
5.簡單。在應用軟件的編碼和修改過程中,尤其是在處理大量對象的運算和操作時,多態簡化顯得尤為突出和重要。
Java中多態性的實現:接口實現,繼承父類的方法重寫,同壹類中的方法重載。
下面是壹個展示多態性使用的小例子:
A級
公共字符串顯示(D obj){
return ("A和D ");
}
公共字符串show(A obj){
return ("A和A ");
}
}
B類擴展了A{
公共字符串顯示(B對象){
return(“B and B”);
}
公共字符串show(A obj){
return ("B和A ");
}
}
C類擴展了B{}
類D擴展了B{}
下面的輸出是什麽?
A a1 =新A();
a a2 = new B();
B B = new B();
C C = new C();
D D = new D();
system . out . println(a 1 . show(b));①
system . out . println(a 1 . show(c));②
system . out . println(a 1 . show(d));③
system . out . println(a2 . show(b));④
system . out . println(a2 . show(c));⑤
system . out . println(a2 . show(d));⑥
system . out . println(b . show(b));⑦
system . out . println(b . show(c));⑧
system . out . println(b . show(d));⑨
回答:
① A和A
② A和A
③ A和D
④ B和A
⑤ B和A
⑥ A和D
⑦ B and B
⑧ B and B
⑨ A和D