封裝被定義為"把乙個或多個專案封閉在乙個物理的或者邏輯的包中"。在物件導向程式設計方**中,封裝是為了防止對實現細節的訪問。
抽象和封裝是物件導向程式設計的相關特性。抽象允許相關資訊視覺化,封裝則使開發者實現所需級別的抽象。
c# 封裝根據具體的需要,設定使用者的訪問許可權,並通過訪問修飾符來實現。
乙個訪問修飾符定義了乙個類成員的範圍和可見性。c# 支援的訪問修飾符如下所示:
public 訪問修飾符允許乙個類將其成員變數和成員函式暴露給其他的函式和物件。任何公有成員可以被外部的類訪問。
下面的例項說明了這點:
using當上面的**被編譯和執行時,它會產生下列結果:system
;namespace
public
void
display()"
,length
);console
.writeline
("寬度: "
,width
);console
.writeline
("面積: "
,getarea
());}}
// rectangle 結束
class
executerectangle
}}
長度:在上面的例項中,成員變數 length 和 width 被宣告為public,所以它們可以被函式 main() 使用 rectangle 類的例項r訪問。4.5寬度:
3.5面積:
15.75
成員函式 display() 和 getarea() 可以直接訪問這些變數。
成員函式 display() 也被宣告為public,所以它也能被 main() 使用 rectangle 類的例項r訪問。
private 訪問修飾符允許乙個類將其成員變數和成員函式對其他的函式和物件進行隱藏。只有同乙個類中的函式可以訪問它的私有成員。即使是類的例項也不能訪問它的私有成員。
下面的例項說明了這點:
using當上面的**被編譯和執行時,它會產生下列結果:system
;namespace
public
double
getarea
()public
void
display()"
,length
);console
.writeline
("寬度: "
,width
);console
.writeline
("面積: "
,getarea
());}}
//end class rectangle
class
executerectangle
}}
請輸入長度:在上面的例項中,成員變數 length 和 width 被宣告為private,所以它們不能被函式 main() 訪問。4.4請輸入寬度:
3.3長度:
4.4寬度:
3.3面積:
14.52
成員函式 acceptdetails() 和 display() 可以訪問這些變數。
由於成員函式 acceptdetails() 和 display() 被宣告為public,所以它們可以被 main() 使用 rectangle 類的例項r訪問。
protected 訪問修飾符允許子類訪問它的基類的成員變數和成員函式。這樣有助於實現繼承。我們將在繼承的章節詳細討論這個。更詳細地討論這個。
internal 訪問說明符允許乙個類將其成員變數和成員函式暴露給當前程式中的其他函式和物件。換句話說,帶有 internal 訪問修飾符的任何成員可以被定義在該成員所定義的應用程式內的任何類或方法訪問。
下面的例項說明了這點:
using當上面的**被編譯和執行時,它會產生下列結果:system
;namespace
public
void
display()"
,length
);console
.writeline
("寬度: "
,width
);console
.writeline
("面積: "
,getarea
());}}
//end class rectangle
class
executerectangle
}}
長度:在上面的例項中,請注意成員函式 getarea() 宣告的時候不帶有任何訪問修飾符。如果沒有指定訪問修飾符,則使用類成員的預設訪問修飾符,即為private。4.5寬度:
3.5面積:
15.75
protected internal 訪問修飾符允許在本類,派生類或者包含該類的程式集中訪問。這也被用於實現繼承。
比如說:乙個人a為父類,他的兒子b,妻子c,私生子d(注:d不在他家裡)
如果我們給a的事情增加修飾符:
重拾C 教程 環境
在這一章中,我們將討論建立 c 程式設計所需的工具。我們已經提到 c 是 net 框架的一部分,且用於編寫 net 應用程式。因此,在討論執行 c 程式的可用工具之前,讓我們先了解一下 c 與 net 框架之間的關係。net 框架是乙個創新的平台,能幫您編寫出下面型別的應用程式 net 框架應用程式...
重拾C 教程 列舉
列舉是一組命名整型常量。列舉型別是使用enum關鍵字宣告的。c 列舉是值型別。換句話說,列舉包含自己的值,且不能繼承或傳遞繼承。宣告列舉的一般語法 enum 其中,列舉列表中的每個符號代表乙個整數值,乙個比它前面的符號大的整數值。預設情況下,第乙個列舉符號的值是 0.例如 enum days 下面的...
重拾C 教程 介面
介面定義了所有類繼承介面時應遵循的語法合同。介面定義了語法合同 是什麼 部分,派生類定義了語法合同 怎麼做 部分。介面定義了屬性 方法和事件,這些都是介面的成員。介面只包含了成員的宣告。成員的定義是派生類的責任。介面提供了派生類應遵循的標準結構。介面使得實現介面的類或結構在形式上保持一致。抽象類在某...