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

C中重寫和過載之間的關鍵區別在於,重寫方法呼叫對其定義的繫結發生在執行時,而過載的方法呼叫繫結到其定義發生在編譯時。...

關鍵的區別–在c中重寫與重載#

C中重寫和重載之間的關鍵區別在於,重寫方法調用對其定義的綁定發生在運行時,而重載的方法調用綁定到其定義發生在編譯時。

C是微軟開發的一種通用編程語言。C的主要優點是它支持面向對象編程(OOP)。OOP的一個支柱是多態性。它使一個對象具有多種行為。多態性有兩種類型,稱為重寫和重載。本文討論了C中方法重寫和重載之間的區別。

目錄

1. 概述和主要區別
2. 在C中重寫是什麼#
3. 什麼是C語言中的重載#
4. C中重寫和重載的相似性#
5. 並排比較-以表格形式在C中重寫與重載
6.摘要

什麼是在c中重寫#(overriding in c#)?

在OOP中還有一個重要的概念是繼承。它使用已經存在的類的屬性和方法。它提高了代碼的可重用性。已經存在的類是基類,新類稱為派生類。在重寫多態性時,應該有一個基類和一個派生類。重寫的方法調用與定義的綁定發生在運行時。一個例子如下。

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

圖01:C#帶重寫的程序

根據上面的程序,類形狀是基類,它包含顯示方法。類Rectangle和Triangle是派生類。這些派生類在它們自己的實現中也有相同的方法顯示。

首先,創建引用變量obj。它指向形狀對象。因此,Shape類的display方法將被執行。然後,引用變量指向矩形對象。因此,將執行Rectangle類的display方法。最後,參考變量指向三角形對象。因此,將執行Triangle類的顯示方法。基類顯示方法被派生類的顯示方法重寫。

要運行的方法在運行時決定。Shape類是用“virtual”關鍵字編寫的。矩形和三角形類是用“override”關鍵字編寫的。如果不使用這些關鍵字,輸出將全部打印Shape類的顯示方法的內容。

什麼是c中的過載#(overloading in c#)?

在重載中,多個方法具有相同的名稱,但具有不同的參數。參數可以是不同類型的。這些方法也可以有不同數量的參數。方法重載發生在同一個類中。重載方法與定義的綁定發生在編譯時。參考以下C程序。

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

圖02:C程序過載

根據上面的程序,類A有兩個同名的方法sum。它們有不同類型的參數。在主程序中,創建了一個對象。sum(2,3)將使用整數調用sum方法。sum(5.1,7.94)將使用雙精度值調用sum方法。兩個方法具有相同的名稱和相同數量的參數。但參數類型不同。相應地調用所需的方法。如果方法名和參數類型相同但參數數目不同,也可能發生重載。

什麼是c語言中重寫與重載的相似性#(the similarity between overriding and overloading in c#)?

  • C中的重寫和重載都是多態性的類型。

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

在C中重寫vs重載#
重寫是在派生類方法中為基類中已經存在的方法提供特定的實現。 C中的重載是用不同的實現創建具有相同名稱的多個方法。
參數
在C#重寫中,這些方法具有相同的名稱、相同的參數類型和相同數量的參數。 在C#重載中,方法具有相同的名稱,但參數數目不同,或者參數類型不同。
發生
在C#中,重寫發生在基類和派生類中。 在C中,重載發生在同一個類中。
裝訂時間
重寫的方法調用綁定到其定義發生在運行時。 重載方法調用對其定義的綁定發生在編譯時。
同義詞
重寫稱為運行時多態性、動態多態性或後期綁定。 重載稱為編譯時多態性、靜態多態性或早期綁定。

總結 - 壓倒一切(overriding) vs. c中的過載#(overloading in c#)

重寫和重載是多態性的兩種類型。在C中重寫和重載的區別在於,被重寫方法調用對其定義的綁定發生在運行時,而重載方法調用對其定義的綁定發生在編譯時。

引用
  • 發表於 2020-10-18 23:50
  • 閱讀 ( 52 )
  • 分類:科技

你可能感興趣的文章

建造師(constructor)和解構函式(destructor)的區別

...進行建模的範例。OOP提高了生產力和可維護性。在OOP中,一切都被視為一個物件。物件是使用類建立或例項化的。建構函式和解構函式是面向物件程式設計中的常用術語。本文討論建構函式和解構函式之間的區別。建構函式和解...

  • 發佈於 2020-10-18 11:50
  • 閲讀 ( 42 )

外面的(out)和參考c#(ref in c#)的區別

...發各種桌面、web和移動應用程式。函式或方法是程式設計中的一個概念。用於執行特定任務的語句組稱為函式或方法。在C程式中,執行從main()開始。這是一個方法的例子。呼叫方法時,資料被傳遞到方法或從方法接收。呼叫...

  • 發佈於 2020-10-18 20:42
  • 閲讀 ( 51 )

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

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

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

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

...形式的類與結構 6. 摘要 什麼是c類#(class in c#)? 在OOP中,一切都被視為一個物件。在一個程式或軟體中,有任意數量的物件。這些物件不是孤立存在的。每個物件都與其他物件互動。這種交流是透過動作來實現的。物件由屬性和...

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

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

...時,稱為過載。它也被稱為靜態繫結或編譯時多型性。 壓倒一切 另一種多型性是重寫的。參考下面用Java編寫的程式。 圖02:覆蓋 根據上面的程式,在類a中有一個方法display(),類B是從類a擴充套件而來的,因此類a中的所有方...

  • 發佈於 2020-10-19 21:16
  • 閲讀 ( 58 )

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

...表格形式在Java中過載與重寫 6. 摘要 什麼是java中的過載(overloading in java)? 過載是使用不同的實現建立同名的多個方法的能力。請參閱下面的Java程式碼。 圖01:Java程式,解釋使用不同數量的引數過載 根據上面的程式,類A包含兩...

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

通用(generic)和c中的非泛型集合#(non-generic collection in c#)的區別

通用(generic)和c中的非泛型集合#(non-generic collection in c#)的區別 泛型集合是一個類,它提供型別安全性,而不必從基集合型別派生並實現特定於型別的成員。非泛型集合是用於資料儲存和檢索的專用類,它提供對堆疊、佇列、...

  • 發佈於 2020-10-24 01:08
  • 閲讀 ( 53 )

代表(delegates)和c中的事件#(events in c#)的區別

代表(delegates)和c中的事件#(events in c#)的區別 C是微軟開發的一種程式語言。它支援結構化程式設計和麵向物件程式設計。委託和事件用於C中的事件驅動程式設計。委託是指向方法的型別安全指標。在具有圖形使用者介面(GUI...

  • 發佈於 2020-10-24 02:21
  • 閲讀 ( 61 )

阿賈克斯(ajax)和jquery公司(jquery)的區別

...erver is made. Therefore, heavy usage of AJAX functi*** often cause server overload. 阿賈克斯(ajax)和jquery公司(jquery)的區別 Ajax和jQuery是兩種不同的語言,用於開發web介面,這兩種語言之間有一些重要的區別。 複雜性 jQuery:jQuery是一種輕量級語言,...

  • 發佈於 2020-10-27 15:54
  • 閲讀 ( 46 )

適合初學者的最佳unity 3d教程

...爐石和路緣石太空計劃都是統一的遊戲。這些教程將教你一切你需要建立你的夢想遊戲!首先,關於名字的註釋。 ...

  • 發佈於 2021-03-21 15:28
  • 閲讀 ( 70 )
wbdxw1697
wbdxw1697

0 篇文章

作家榜

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

相關推薦