[.net 物件導向程式設計基礎] (8) 基礎中的基礎——修飾符

yubinfeng發表於2015-06-03

[.net 物件導向程式設計基礎] (8) 基礎中的基礎——修飾符

 

    在進入C#物件導向核心之前,我們需要先對修飾符有所瞭解,其實我們在前面說到變數和常量的時候,已經使用了修飾符,並且說明了變數和常量的修改符。

   首先 修飾符是什麼?

    修飾符用於限定型別以及型別成員的申明

    從定義可以看出按功能分為兩類:訪問修飾符和宣告修飾符

1.訪問修飾符 (5個)

訪問修飾符

說明

public

公有訪問。不受任何限制。

private

私有訪問。只限於本類成員訪問,子類,例項都不能訪問。

protected

保護訪問。只限於本類和子類訪問,例項不能訪問。

internal

內部訪問。只限於本專案內訪問,其他不能訪問。

protected internal

內部保護訪問。只限於本專案或是子類訪問,其他不能訪問

    C#成員型別的可修飾及預設修飾符如下表:

成員型別

預設修飾符

可被修飾符

enum

public

none

class

private

publicprotectedinternalprivate 
protected internal

interface

public

none

struct

private

publicinternalprivate

2.宣告修飾符 (10個)

Partial:在整個同一程式集中定義分部類和結構

Static: 宣告屬於型別本身而不是屬於特定物件的成員。

Abstract:抽象類,只能是其他類的基類。類中的方法只宣告不實現,方法的實現在他的派生類中完成。

Sealed:指定類不能被繼承。

Virtual:用於修飾方法、屬性、索引器或事件宣告,並且允許在派生類中重寫這些物件

Override:提供從基類繼承的成員的新實現

New:作修飾符,隱藏從基類成員繼承的成員,在不使用 new 修飾符的情況下隱藏成員是允許的,但會生成警告。作運算子,用於建立物件和呼叫建構函式。

Extern:用於宣告在外部實現的方法。 extern 修飾符的常見用法是在使用 Interop 服務調入非託管程式碼時與 DllImport 特性一起使用。 在這種情況下,還必須將方法宣告為 static

Readonly:修飾欄位,表示該欄位為只讀欄位。

注意:readonly修飾引用型別時由於操作不當可能修改該只讀物件狀態。例如:Readonly List< Person> persons=.;

我們可能在某些地方對persons 進行了修改:persons.add(new Person());

Const:修飾欄位,表示該欄位為只讀欄位。並且在編譯時必須能夠明確知道該欄位的值,其值是硬編碼到程式中去的,修改了該型別成員後需要重新編譯才能使修改生效。

readonly是執行時只讀,內容在執行時確定,所以修改了readonly型別成員後無需重新編譯即可生效。 

Readonly不能修飾區域性變數,const可以。

 

要點:

  Virtual,override和new 的區別

virtual  用於父類中,宣告某方法可以重寫,該方法不能是static

override(覆蓋繼承) 用於子類中,重寫父類中用virtual/override/abstract關鍵字宣告的方法;

new(隱藏繼承)  用於子類中,可修飾父類中有或無virtual宣告的方法;

  如果在父類中有與父類同名同參的方法時,C#會隱式在子類前新增一個new關鍵字。 

【區別】overridenew

  當將一個子類例項賦值給父類例項,在子類例項與父類例項中分別呼叫該方法時:使用override修飾的都將呼叫子類方法,而使用new修飾的會分別呼叫子類方法和父類方法。

  NewOverride這兩個關鍵字是互斥的。不可以同時使用。  

【區別】virtualabstract

  virtual:用於父類中宣告該方法可被重寫。

  abstract:只能用在抽象類中宣告抽象方法,本身不能實現任何功能(因此必須在子類中override),不能例項化。

  兩者除了在子類中同樣可以用override重寫這個相同點之外,沒有其他關係。 

 

==============================================================================================

返回目錄

 <如果對你有幫助,記得點一下推薦哦,有不明白的地方或寫的不對的地方,請多交流>

============================================================================================== 

相關文章