程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#面向對象名詞比較(轉ttyp 的文章)

C#面向對象名詞比較(轉ttyp 的文章)

編輯:關於C語言
重寫(override)與重載(overload)

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

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

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



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

區別:

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

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

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

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

結構:不能繼承重寫,不能有修飾,實例化使用的是堆中的內存(和普通變量一樣),是值賦值

常數(const )和只讀(readonly)

相似:相對於變量,其值基本不變
區別:
常數(const ):其值為硬編碼,其值只能在申明時賦值,在類中使用const申明時,const好像隱式靜態變量,每個實例不需要保存副本
只讀(readonly):其值可以賦值,但只能在構造函數中賦值或申明時指定,申明為readonly的變量,每個類實例中可以有不同的副本

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved