多型性(polymorphism)和oop中的繼承(inheritance in oop)的區別

面向物件程式設計(OOP)是軟體開發中常用的方法。許多程式語言支援面向物件程式設計。面向物件程式設計是一種使用類和物件設計程式的方法。OOP中的類是建立物件的藍圖。類具有屬性和方法。物件是類的例項。OOP包含繼承、多型、抽象和封裝四大支柱。本文討論了OOP中多型與繼承的區別。OOP中多型性與繼承的關鍵區別在於多型性是一個物件以多種方式表現的能力,而繼承則是使用現有類的屬性和方法建立一個新的類。...

關鍵區別——oop中的多態與繼承

面向對象程序設計(OOP)是軟件開發中常用的方法。許多編程語言支持面向對象編程。面向對象編程是一種使用類和對象設計程序的方法。OOP中的類是創建對象的藍圖。類具有屬性和方法。對象是類的實例。OOP包含繼承、多態、抽象和封裝四大支柱。本文討論了OOP中多態與繼承的區別。OOP中多態性與繼承的關鍵區別在於多態性是一個對象以多種方式表現的能力,而繼承則是使用現有類的屬性和方法創建一個新的類。

目錄

1. 概述和主要區別
2. 什麼是OOP中的多態性
3. 什麼是OOP中的繼承
4. OOP中多態性與繼承性的相似性
5. 並排比較——表格形式的OOP中多態性與繼承性
6. 摘要

什麼是oop中的多態性(polymorphi** in oop)?

多態性是指多種形式。一個物體可以有多種行為。多態性可分為兩類。它們正在過載和覆蓋。

超載

參考下面用Java編寫的程序。

多態性(polymorphi**)和oop中的繼承(inheritance in oop)的區別

圖01:過載

根據上述程序,創建一個類型為A的對象。打電話時目標金額();它將給出與sum()方法相關的輸出。當呼叫目標金額(2,3);它將給出與sum(int a,int b)相關的輸出。可以觀察到,同一物體根據情況有不同的行為。當存在多個同名但參數不同的方法時,稱為重載。它也被稱為靜態綁定或編譯時多態性。

壓倒一切

另一種多態性是重寫的。參考下面用Java編寫的程序。

多態性(polymorphi**)和oop中的繼承(inheritance in oop)的區別

圖02:覆蓋

根據上面的程序,在類a中有一個方法display(),類B是從類a擴展而來的,因此類a中的所有方法都可以被類B訪問,這就是繼承。稍後將進一步描述繼承概念。

類B也有相同的display()方法。當創建類型A的對象並調用顯示方法時,輸出將給出B。類A的顯示方法被類B的顯示方法覆蓋。所以,輸出是B。

當存在名稱和參數相同但在兩個不同類中的方法,並且它們通過繼承鏈接時,稱為重寫。它也被稱為後期綁定、動態綁定、運行時多態性。重載和重寫稱為多態性。它是面向對象編程中的一個主要概念。

什麼是oop中的繼承(inheritance in oop)?

參考下面用Java編寫的程序。

多態性(polymorphi**)和oop中的繼承(inheritance in oop)的區別

圖03:繼承示例

根據上面的程序,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日。此處提供
  • 發表於 2020-10-19 21:16
  • 閱讀 ( 59 )
  • 分類:科技

你可能感興趣的文章

瞬變(transient)和平衡多型性(balanced polymorphism)的區別

...多型性與平衡多型性 6. 摘要 什麼是瞬時多型性(transient polymorphi**)? 當一個基因庫中有兩個等位基因時,可以在群體中看到短暫的多型性。這些多型性位於一個特定的基因位點。等位基因的兩種交替形式中的一種在遺傳過程中逐...

  • 發佈於 2020-09-21 23:59
  • 閲讀 ( 56 )

包裹(package)和java介面(interface in java)的區別

Java中的Package和Interface的主要區別在於,Package有助於對類進行有條理的分類以方便訪問和維護,而Interface則有助於實現多個繼承和實現抽象。 Java是最流行的程式語言之一。Java的主要優點是它支援面向物件程式設計。這種方...

  • 發佈於 2020-10-18 11:01
  • 閲讀 ( 53 )

壓倒一切(overriding)和c中的過載#(overloading in c#)的區別

...優點是它支援面向物件程式設計(OOP)。OOP的一個支柱是多型性。它使一個物件具有多種行為。多型性有兩種型別,稱為重寫和過載。本文討論了C中方法重寫和過載之間的區別。 目錄 1. 概述和主要區別 2. 在C中重寫是什麼# 3. ...

  • 發佈於 2020-10-18 23:50
  • 閲讀 ( 53 )

領域(field)和c屬性#(property in c#)的區別

關鍵區別——c語言中的欄位與屬性# C中field和property的關鍵區別在於,field是直接在類中宣告的任何型別的變數,而property是一個成員,它提供了一種靈活的機制來讀、寫或計算私有欄位的值。 C是微軟開發的一種現代程式語言...

  • 發佈於 2020-10-19 02:36
  • 閲讀 ( 50 )

早期的(early)和後期裝訂(late binding)的區別

...區別——早期繫結與後期繫結 早期繫結和後期繫結是與多型性相關的兩個概念。早期繫結發生在編譯時,後期繫結發生在執行時。早期繫結和後期繫結的關鍵區別在於早期繫結使用類資訊來解析方法呼叫,而後期繫結使用物件...

  • 發佈於 2020-10-19 04:05
  • 閲讀 ( 53 )

靜止的(static)和java期末考試(final in java)的區別

...final。Java支援面向物件程式設計(OOP)。OOP的一個支柱是多型性。一種多型性是重寫的。類具有display方法。類B擴充套件了類A,它有自己的顯示方法。當建立型別為B的物件並呼叫display方法時,將輸出“B”。類A的顯示方法被類B...

  • 發佈於 2020-10-19 07:48
  • 閲讀 ( 57 )

班(class)和結構(c)#(structure in c#)的區別

關鍵區別——c語言中的類與結構# C是微軟開發的一種現代的、通用的、高階的程式語言。它是一種類似於Java的程式語言。它包含強大的程式設計功能,如委託、索引器和語言整合查詢。C的主要優點是它支援面向物件程式設...

  • 發佈於 2020-10-19 17:15
  • 閲讀 ( 54 )

超類(superclass)和子類(subclass)的區別

...式或軟體可以使用面向物件的程式設計來開發。繼承是OOP中的一個主要概念。它提高了程式碼的可重用性。它不需要從一開始就實現一個程式,而是允許將已經存在的類的屬性和方法繼承到一個新類中。這有助於使程式更易於管...

  • 發佈於 2020-10-19 19:56
  • 閲讀 ( 43 )

倍數(multiple)和多層次遺傳(multilevel inheritance)的區別

...格形式的多重與多級繼承 6. 摘要 什麼是多重繼承(multiple inheritance)? 多重繼承是指一個類繼承多個基類。 圖01:多重繼承 A B和C是類。A和B是基類,C是派生類。C類必須同時管理基類A和B的依賴關係。多重繼承在軟體專案中並沒有...

  • 發佈於 2020-10-19 20:00
  • 閲讀 ( 51 )

超載(overloading)和在java中重寫(overriding in java)的區別

...的例項。這些物件與其他物件通訊。OOP的一個主要概念是多型性。它是一個物件以多種方式表現的能力。多型性分為過載和重寫兩部分。本文將在Java中討論這兩者之間的區別。Java中過載和重寫之間的關鍵區別在於,過載是使用...

  • 發佈於 2020-10-19 21:20
  • 閲讀 ( 47 )
iwjppcrt2019
iwjppcrt2019

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦