理解java的三大特性之多型

2021-08-02 14:12:37 字數 1845 閱讀 8120

物件導向的三大特性:封裝、繼承、多型。封裝和繼承幾乎都是為多型而準備的。這是我們最後乙個概念,也是最重要的知識點。

一、概念

多型的定義:指允許不同類的物件對同一訊息做出響應。即同一訊息可以根據傳送物件的不同而採用多種不同的行為方式。(傳送訊息就是函式呼叫)

實現多型的技術稱為:動態繫結(dynamic binding)

多型的作用:消除型別之間的耦合關係。

多型存在的三個必要條件:

一、要有繼承;

二、要有重寫;

三、父類引用指向子類物件。

多型的優點:

1.可替換性(substitutability)。多型對已存在**具有可替換性。例如,多型對圓circle類工作,對其他任何圓形幾何體,如圓環,也同樣工作。

2.可擴充性(extensibility)。多型對**具有可擴充性。增加新的子類不影響已存在類的多型性、繼承性,以及其他特性的執行和操作。實際上新加子類更容易獲得多型功能。例如,在實現了圓錐、半圓錐以及半球體的多型基礎上,很容易增添球體類的多型性。

3.介面性(inte***ce-ability)。多型是超類通過方法簽名,向子類提供了乙個共同介面,由子類來完善或者覆蓋它而實現的。如圖8.3 所示。圖中超類shape規定了兩個實現多型的介面方法,computearea()以及computevolume()。子類,如circle和sphere為了實 現多型,完善或者覆蓋這兩個介面方法。

4.靈活性(flexibility)。它在應用中體現了靈活多樣的操作,提高了使用效率。

5.簡化性(simplicity)。多型簡化對應用軟體的**編寫和修改過程,尤其在處理大量物件的運算和操作時,這個特點尤為突出和重要。

二、多型的實現

2.1實現條件。

上面概念中提到了多型的三個必要條件

繼承:在多型中必須存在有繼承關係的子類和父類。

重寫(override):子類對父類中某些方法進行重新定義,在呼叫這些方法時就會呼叫子類的方法

父類引用指向子類物件(向上轉型):在多型中需要將子類的引用賦給父類物件,只有這樣該引用才能具備呼叫父類的方法和子類的方法

2.2實現形式

定義乙個person類:

public abstract class person
定義乙個student和teacher類

public class student extends person 

@override

public void sleep()

public void study()

}

public class teacher extends person 

@override

public void sleep()

public void teach()

}

測試類:

public class test 

public static void school(person p)

if(p instanceof teacher)

}}

從這裡可以看出,如果使用school(student s)的話,將來維護起來會很麻煩。還是需要在工作中多加練習使用繼承,重寫,多型,這樣以後會慢慢加深對概念的理解。其實在初期開發中,不覺得多型有什麼好處,但是到後期開發過程中,尤其是維護的時候,就可以看到多型的用處了。所有的架構,模式設計,語言特性都是開發者為了減少耦合,**易於維護,而不至於在以後牽一髮而動全身。

在開發中一定要學會封裝繼承,一定不要造車輪!

java三大特性之多型

多型 多型的概述 1 多型 事物的多種狀態,polymorphic 物件的多型性 同乙個物件,可能具有不同的名稱,同乙個物件,有不同的型別的引用指向它。本質 同乙個物體有不同的名稱和描述。型別的多型性 同乙個型別,可能具有不同的子類實現。同乙個型別引用,有不同的物件實現。本質 同乙個名字和描述,可以...

Java基礎 三大特性之多型

多型的定義 指允許不同類的物件對同一訊息做出響應。即同一訊息可以根據傳送物件的不同而採用多種不同的行為方式。實現多型的技術稱為 動態繫結 dynamic binding 是指在執行期間判斷所引用物件的實際型別,根據其實際的型別呼叫其相應的方法。多型的作用 消除型別之間的耦合關係。多型三個必要條件 1...

三大特性之 多型

乙個行為不同的物件產生出不同的形態這就是多型,多型也是實現 復用的方式那麼為什麼呢?為什麼多型也是 復用的產物呢,因為多型的第乙個前提就是繼承,必須建立在繼承的基礎之上,才有多型之談,也就是說這個不同的物件也是有前提的,就是在繼承的條件之下的不同的類物件,簡單來說就是子類和基類 多型的第乙個條件就是...