繼承與多型的區別


在計算機程式設計中,繼承多型是兩個重要的概念。“繼承”和“多型”最基本的區別在於,“繼承”是面向物件程式設計的一個概念,它允許利用現有類的特性建立新類,而“多型”的概念則表示單個函式的多種形式。

閱讀本文,瞭解更多關於繼承和多型的資訊,以及它們之間是如何不同的。

什麼是繼承?

繼承是面向物件程式設計 (OOP) 中的一個概念,它指的是一個物件可以獲取一個或多個其他物件特性的過程。因此,繼承是 OOP 中建立程式碼可重用性的最強大的概念之一。

藉助繼承,我們可以透過建立現有類之間的父子關係來構建新類。因此,繼承允許建立現有類的新的子型別。

示例

在 OOP 中,使用繼承的主要目的是透過可重用性的概念來縮短程式碼長度。繼承有很多型別,例如單繼承、多繼承、層次繼承、多層繼承和混合繼承。

class base_class:
   def __init__(self, f_name, l_name):
      self.firstname = f_name
      self.lastname = l_name
   def print_it(self):
      print(self.firstname, self.lastname)
   print("An instance of 'base_class' is created")
   my_instance = base_class("John", "Will")
   print("A method 'print_it' is being called using the created instance")
   my_instance.print_it()

輸出

它將產生以下輸出 -

An instance of 'base_class' is created
A method 'print_it' is being called using the created instance
John Will

什麼是多型?

多型意味著多種形式。它是在程式設計中允許單個函式具有多種形式的概念。多型通常在函式上實現,它允許物件確定要呼叫函式的哪種形式。

多型有兩種型別,分別是編譯時多型和執行時多型。編譯時多型也稱為方法過載,而執行時多型也稱為方法覆蓋

示例

def add_vals(val_1, val_2, val_3 = 1):
   my_result = val_1 + val_2 + val_3
   return my_result

print("The method is being called by passing two parameters")
print(add_vals(7, 9))
print("The method is being called by passing three parameters")
print(add_vals(11, 23, 45))

輸出

它將產生以下輸出 -

The method is being called by passing two parameters
17
The method is being called by passing three parameters
79

繼承與多型的區別

以下是繼承與多型之間的重要區別 -

序號

繼承

多型

1.

它是面向物件程式設計正規化的一部分。

'Poly' 表示多種,'morph' 表示形式。

2.

它可以在 C++、Java、Python 和其他面向物件程式語言中實現。

它是面向物件程式設計正規化的一部分。

3.

它是一種方法,透過這種方法可以建立一個新類,該類可以獲取並使用現有類的屬性。

它可以在 C++、Java、Python 和其他面向物件程式語言中實現。

4.

現有類稱為“父/基類”,使用此類的類稱為“子/派生類”。

因此,多型是指以多種方式執行特定任務的方法。

5.

它有助於程式碼重用。

這可以在使用函式時使用。

6.

在實現面向物件程式設計時,它可以減小程式碼的大小。

它允許類的物件決定它必須採用哪種形式才能使用類的方法和屬性。

7.

繼承的型別

  • 單繼承

  • 多層繼承

  • 多繼承

  • 混合繼承

  • 層次繼承

多型的型別

  • 編譯時多型 - 也稱為方法過載。

  • 執行時多型 - 也稱為方法覆蓋。

8.

它可用於模式設計。

它可用於模式設計。

結論

這兩個概念之間最顯著的區別在於,繼承用於增強可重用性的概念以減少程式中的程式碼長度,而多型則定義了單個函式可以以多種形式呼叫的概念。

更新於: 2023年2月21日

7K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告