C#物件導向名詞比較

來源:互聯網
上載者:User
C#物件導向名詞比較重寫(override)與重載(overload)

相似:他們都是重新定義一個方法的實現過程

區別:
重寫(override):是指對象之間的某個方法的重新實現,在一個類繼承一個類時,當基類中某方法申明為virtual或abstract時,在衍生類別中使用override關鍵字重新申明一個方法,注意該方法必須與基類中的參數傳回值一樣,一個類中對於基類某方法只能重寫一次,調用基類還是衍生類別的實現是通過所定義的對象的類型來決定,和方法的參數無關

重載(overload):指對象中某個方法的重新實現,方法重載不需要關鍵字,只需要申明方法的參數類型或個數不一樣即可,重載不能根據傳回型別不同來重載,重載可以重載任意多次,沒有限制.調用哪個重載方法只和調用時的參數有關係

================
(抽象)abstract和虛擬(virtual)
相似:在申明方法的時候,都能被重寫

區別:

(抽象)abstract:可以申明類也可以申明方法,申明方法時不能和sealed一起申明,所申明的類必須被繼承,申明的方法也必須被重寫,申明時沒有具體實現,實際上它起一個介面的作用

虛擬(virtual):只能申明方法,可以在申明方法的時候寫對應的實現

======================
類(class)和結構(struct)
相似:都是對象,就單個對象來說,類能實現的幾乎結構都能實現

區別:
類:能被繼承重寫,可以有修飾申明(abstract,sealed),類執行個體化時使用的是棧中的記憶體(相對堆慢一點),類在賦值時,只是引用賦值(賦值後,改變被賦值對象的屬性,其他跟著改)

結構:不能繼承重寫,不能有修飾,執行個體化使用的是堆中的記憶體(和普通變數一樣),是值賦值
==========================
常數(const )和唯讀(readonly)

相似:相對於變數,其值基本不變
區別:
常數(const ):其值為寫入程式碼,其值只能在申明時賦值,在類中使用const申明時,const好像隱式靜態變數,每個執行個體不需要儲存副本
唯讀(readonly):其值可以賦值,但只能在建構函式中賦值或申明時指定,申明為readonly的變數,每個類執行個體中可以有不同的副本

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.