關鍵區別——oop中的多態與繼承
面向對象程序設計(OOP)是軟件開發中常用的方法。許多編程語言支持面向對象編程。面向對象編程是一種使用類和對象設計程序的方法。OOP中的類是創建對象的藍圖。類具有屬性和方法。對象是類的實例。OOP包含繼承、多態、抽象和封裝四大支柱。本文討論了OOP中多態與繼承的區別。OOP中多態性與繼承的關鍵區別在於多態性是一個對象以多種方式表現的能力,而繼承則是使用現有類的屬性和方法創建一個新的類。
目錄
1. 概述和主要區別
2. 什麼是OOP中的多態性
3. 什麼是OOP中的繼承
4. OOP中多態性與繼承性的相似性
5. 並排比較——表格形式的OOP中多態性與繼承性
6. 摘要
什麼是oop中的多態性(polymorphi** in oop)?
多態性是指多種形式。一個物體可以有多種行為。多態性可分為兩類。它們正在過載和覆蓋。
超載
參考下面用Java編寫的程序。
根據上述程序,創建一個類型為A的對象。打電話時目標金額();它將給出與sum()方法相關的輸出。當呼叫目標金額(2,3);它將給出與sum(int a,int b)相關的輸出。可以觀察到,同一物體根據情況有不同的行為。當存在多個同名但參數不同的方法時,稱為重載。它也被稱為靜態綁定或編譯時多態性。
壓倒一切
另一種多態性是重寫的。參考下面用Java編寫的程序。
根據上面的程序,在類a中有一個方法display(),類B是從類a擴展而來的,因此類a中的所有方法都可以被類B訪問,這就是繼承。稍後將進一步描述繼承概念。
類B也有相同的display()方法。當創建類型A的對象並調用顯示方法時,輸出將給出B。類A的顯示方法被類B的顯示方法覆蓋。所以,輸出是B。
當存在名稱和參數相同但在兩個不同類中的方法,並且它們通過繼承鏈接時,稱為重寫。它也被稱為後期綁定、動態綁定、運行時多態性。重載和重寫稱為多態性。它是面向對象編程中的一個主要概念。
什麼是oop中的繼承(inheritance in oop)?
參考下面用Java編寫的程序。
根據上面的程序,A類有sum()方法,B類有sub()方法。
類A的sum()方法可以在B類中使用extend關鍵字。重用現有類中的屬性和方法來創建新類稱為繼承。即使在類B中沒有sum()方法;它是從類A繼承的。繼承對於代碼的可重用性很有用。較老的類稱為基類、超類或父類。派生類稱為子類或子類。
繼承類型
遺傳有多種類型。它們分別是單級繼承、多級繼承、多重繼承、層次繼承和混合繼承。
單一繼承
在單繼承中,有一個超類和一個子類。如果類A是超類,類B是子類,那麼類B可以訪問類A的所有屬性和方法,只有一個級別,因此稱為單級繼承。
多層次繼承
在多級繼承中,有三個級別的類。中間類繼承自超級類。子類繼承自中間類。如果有A,B,C三個類,A是超類,B是中間類。然後B從A繼承,C從B繼承,這是一個多級繼承。
多重繼承
在多重繼承中,有許多超類和一個子類。如果有三個超類被稱為A、B、C和D是子類,則D類可以繼承A、B和C。C++語言中支持多繼承。Java或C等編程語言不支持它。接口用於在這些語言中實現多重繼承。
等級繼承
如果有一個類稱為超類,而B、C是子類,則這些子類可以繼承類A的屬性和方法,這種繼承類型稱為層次繼承。
雜交遺傳
還有另一種特殊的繼承類型,稱為混合繼承。它是多層次、多繼承的結合體。如果A、B、C和D是類,B繼承自A,D繼承自B和C,則為混合繼承。
多態性(polymorphi**)和oop中的繼承(inheritance in oop)的共同點
- 兩者都是面向對象編程的概念。
多態性(polymorphi**)和oop中的繼承(inheritance in oop)的區別
OOP中多態與繼承 | |
多態性是一個對象以多種方式表現的能力。 | 繼承是使用現有類的屬性和方法創建一個新類。 |
使用 | |
多態性用於對象在編譯時和運行時調用哪種形式的方法。 | 繼承用於代碼的可重用性。 |
實施 | |
多態性是在方法中實現的。 | 繼承是在類中實現的。 |
類別 | |
多態性可以分為重載和重寫。 | 繼承可以分為單級繼承、多級繼承、層次繼承、混合繼承和多重繼承。 |
總結 - 多態性(polymorphi**) vs. oop中的繼承(inheritance in oop)
多態性和繼承是面向對象編程中的主要概念。OOP中多態性和繼承的區別在於多態性是多個窗體的通用接口,而繼承是使用現有類的屬性和方法創建一個新的類。這兩個概念在軟件開發中被廣泛使用。
下載oop中的pdf多態vs繼承
引用
- 8.3什麼是Java中的繼承|講座|教程,Telusko Learning,2014年5月15日。此處提供Java多態性教程,Telusko Learning,2014年5月15日。此處提供