學(xué)習(xí)Java的同學(xué)注意了!!!
學(xué)習(xí)進(jìn)程中遇到甚么問題或想獲得學(xué)習(xí)資源的話,歡迎加入Java學(xué)習(xí)交換群,群號碼:183993990 我們1起學(xué)Java!
Java中多態(tài)性的實(shí)現(xiàn)
甚么是多態(tài)
下面是多態(tài)存在的3個必要條件,要求大家做夢時都能背出來!
多態(tài)存在的3個必要條件
1、要有繼承;
2、要有重寫;
3、父類援用指向子類對象。
多態(tài)的好處:
1.可替換性(substitutability)。多態(tài)對已存在代碼具有可替換性。例如,多態(tài)對圓Circle類工作,對其他任何圓形幾何體,如圓環(huán),也一樣工作。
2.可擴(kuò)充性(extensibility)。多態(tài)對代碼具有可擴(kuò)充性。增加新的子類不影響已存在類的多態(tài)性、繼承性,和其他特性的運(yùn)行和操作。實(shí)際上新加子類更容易取得多態(tài)功能。例如,在實(shí)現(xiàn)了圓錐、半圓錐和半球體的多態(tài)基礎(chǔ)上,很容易增加球體類的多態(tài)性。
3.接口性(interface-ability)。多態(tài)是超類通過方法簽名,向子類提供了1個共同接口,由子類來完善或覆蓋它而實(shí)現(xiàn)的。如圖8.3 所示。圖中超類Shape規(guī)定了兩個實(shí)現(xiàn)多態(tài)的接口方法,computeArea()和computeVolume()。子類,如Circle和Sphere為了實(shí)現(xiàn)多態(tài),完善或覆蓋這兩個接口方法。
4.靈活性(flexibility)。它在利用中體現(xiàn)了靈活多樣的操作,提高了使用效力。
5.簡化性(simplicity)。多態(tài)簡化對利用軟件的代碼編寫和修改進(jìn)程,特別在處理大量對象的運(yùn)算和操作時,這個特點(diǎn)尤其突出和重要。
Java中多態(tài)的實(shí)現(xiàn)方式:接口實(shí)現(xiàn),繼承父類進(jìn)行方法重寫,同1個類中進(jìn)行方法重載。
1個小題目:
(1)相干類
class A ...{ public String show(D obj)...{ return ("A and D"); } public String show(A obj)...{ return ("A and A"); } } class B extends A...{ public String show(B obj)...{ return ("B and B"); } public String show(A obj)...{ return ("B and A"); } } class C extends B...{} class D extends B...{}
(2)問題:以下輸出結(jié)果是甚么?
A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.println(a1.show(b)); ① System.out.println(a1.show(c)); ② System.out.println(a1.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)); ⑨
(3)答案
① A and A
② A and A
③ A and D
④ B and A
⑤ B and A
⑥ A and D
⑦ B and B
⑧ B and B
⑨ A and D
學(xué)習(xí)Java的同學(xué)注意了!!!
學(xué)習(xí)進(jìn)程中遇到甚么問題或想獲得學(xué)習(xí)資源的話,歡迎加入Java學(xué)習(xí)交換群,群號碼:183993990 我們1起學(xué)Java!