首頁 > Java > java教程 > Java多態性理解

Java多態性理解

巴扎黑
發布: 2017-06-23 16:36:53
原創
1819 人瀏覽過

Java中多型性的實作

什麼是多型別

  1. #物件導向的三大特性:封裝、繼承、多型。從某個角度來看,封裝和繼承幾乎都是為多態而準備的。這是我們最後一個概念,也是最重要的知識點。

  2. 多態的定義:指允許不同類別的物件對相同訊息做出回應。即同一訊息可以根據發送物件的不同而採用多種不同的行為方式。 (發送訊息就是函數呼叫)

  3. 實作多態的技術稱為:動態綁定(dynamic binding),是指在執行期間判斷所引用物件的實際類型,根據其實際的類型呼叫其對應的方法。

  4. 多態的作用:消除型別之間的耦合關係

  5. 現實中,關於多態的例子不勝枚舉。比方說按下 F1 鍵這個動作,如果目前在 Flash 介面下彈出的就是 AS 3 的說明文件;如果目前在 Word 下彈出的就是 Word 幫助;在 Windows 下彈出的就是 Windows 幫助和支援。同一個事件發生在不同的物件上會產生不同的結果。

以下是多型存在的三個必要條件,要求大家做夢時都能背出來!

多態存在的三個必要條件
一、要有繼承;
二、要有重寫;
三、父類別引用指向子類別物件。

 多型的好處:

1.可替換性(substitutability)。多態對已存在代碼具有可替換性。例如,多態對圓Circle類工作,對其他任何圓形幾何體,如圓環,也同樣工作。
2.可擴充性(extensibility)。多態對程式碼具有可擴充性。增加新的子類別不會影響已存在類別的多態性、繼承性,以及其他特性的運作和操作。實際上新加子類別更容易獲得多型功能。例如,在實現了圓錐、半圓錐以及半球體的多態基礎上,很容易增添球體類的多態性。
3.介面性(interface-ability)。多態是超類別透過方法簽名,向子類別提供了一個共同接口,由子類別來完善或覆蓋它而實現的。如圖8.3 所示。圖中超類別Shape規定了兩個實作多態的介面方法,computeArea()以及computeVolume()。子類,如Circle和Sphere為了實現多態,完善或覆寫這兩個介面方法。
4.靈活性(flexibility)。它在應用中體現了靈活多樣的操作,並提高了使用效率。
5.簡化(simplicity)。多態簡化對應用軟體的程式碼編寫和修改過程,尤其在處理大量物件的運算和操作時,這個特點尤其突出和重要。


Java中多態的實作方式:介面實現,繼承父類別進行方法重寫,同一個類別中進行方法重載。

一個小題目:

(一)相關類別

Java多態性理解
#
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...{}
登入後複製
Java多態性理解

 

(二)問題:下列輸出結果為何?

Java多態性理解
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));    ⑨
登入後複製
Java多態性理解

(三)答案

Java多態性理解
①   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
登入後複製
Java多態性理解

學習Java的同學注意了! ! !
學習過程中遇到什麼問題或想取得學習資源的話,歡迎加入Java學習交流群:159610322   我們一起學習Java!

#

以上是Java多態性理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板