——-原文傳送門——-
封裝被定義為」把乙個或多個專案封閉在乙個物理的或者邏輯的包中」。在物件導向程式設計方**中,封裝是為了防止對實現細節的訪問。
抽象和封裝是物件導向程式設計的相關特性。抽象允許相關資訊視覺化,封裝則使程式設計師實現所需級別的抽象。
封裝使用 訪問修飾符 來實現。乙個 訪問修飾符 定義了乙個類成員的範圍和可見性。c# 支援的訪問修飾符如下所示:
public 訪問修飾符
public 訪問修飾符允許乙個類將其成員變數和成員函式暴露給其他的函式和物件。任何公有成員可以被外部的類訪問。
using system;
public
void
display()
", length);
console.writeline("寬度: ", width);
console.writeline("面積: ", getarea());
}}// rectangle 結束
class executerectangle
}}
結果
長度: 4.5
寬度: 3.5
面積: 15.75
在上面的例項中,成員變數 length 和 width 被宣告為public,所以它們可以被函式 main() 使用 rectangle 類的例項r訪問。
成員函式 display() 和 getarea() 可以直接訪問這些變數。
成員函式 display() 也被宣告為public,所以它也能被 main() 使用 rectangle 類的例項r訪問。
private 訪問修飾符
private 訪問修飾符允許乙個類將其成員變數和成員函式對其他的函式和物件進行隱藏。只有同乙個類中的函式可以訪問它的私有成員。即使是類的例項也不能訪問它的私有成員。
using system;
public
double
getarea()
public
void
display()
", length);
console.writeline("寬度: ", width);
console.writeline("面積: ", getarea());
}}//end class rectangle
class executerectangle
}}
結果
請輸入長度:
4.4請輸入寬度:
3.3長度: 4.4
寬度: 3.3
面積: 14.52
在上面的例項中,成員變數length和width被宣告為private,所以它們不能被函式 main() 訪問。
成員函式 acceptdetails() 和 display() 可以訪問這些變數。
由於成員函式 acceptdetails() 和 display() 被宣告為public,所以它們可以被 main() 使用 rectangle 類的例項r訪問。
protected 訪問修飾符
protected 訪問修飾符允許子類訪問它的基類的成員變數和成員函式。這樣有助於實現繼承。
internal 訪問修飾符
internal 訪問說明符允許乙個類將其成員變數和成員函式暴露給當前程式中的其他函式和物件。換句話說,帶有 internal 訪問修飾符的任何成員可以被定義在該成員所定義的應用程式內的任何類或方法訪問。
using system;
namespace
public
void display()
", length);
console.writeline("寬度: ", width);
console.writeline("面積: ", getarea());
}}//end class rectangle
class
executerectangle
}}
結果
長度: 4.5
寬度: 3.5
面積: 15.75
在上面的例項中,請注意成員函式 getarea() 宣告的時候不帶有任何訪問修飾符。如果沒有指定訪問修飾符,則使用類成員的預設訪問修飾符,即為private。
protected internal 訪問修飾符
protected internal 訪問修飾符允許乙個類將其成員變數和成員函式對同一應用程式內的子類以外的其他的類物件和函式進行隱藏。被用於實現繼承。
internal 同一命名空間可以訪問
public 公共,都可以訪問
protected: 爺爺有一張銀行卡,爸爸可以用,兒子也可以用,隔壁老王不可以用(因為老王跟爺爺沒有繼承關係)
internal: 王總有一張銀行卡,秘書可以用,經理可以用,王總兒子不可以用(因為銀行卡屬於公家財務,只能由公司內部人員【同乙個程式集】使用,王總兒子雖然繼承王總,但是他不是公司內部人員,所以也不能**私用)
相同: 這兩個是訪問類中成員許可權的限制符.在類外如果想使用類中的成員,只能直接使用 public 型別的, protected 和 private 都是不能訪問的,對於類外使用而言,這兩個是完全相同的.
不同: 在基類的派生類中,可以直接訪問繼承而來的 protected 成員,但是不能訪問 private 限制的成員.所以在派生類中,可以訪問基類繼承而來的 public 和 proected 兩種型別的成員.在 public 公有派生下,繼承而來的成員訪問許可權不變. protected 派生下, public 和 protected 都變成 protected , private 派生下,所有的繼承下來都是 private 了.
C 訪問修飾符
所有型別和型別成員都具有可訪問性級別,用來控制是否可以在您程式集的其他 中或其他程式集中使用它們。您在宣告型別或成員時使用以下訪問修飾符之一來指定其可訪問性 public 訪問不受限制。可以類內和任何類外的 中訪問。private 可以被所屬類訪問。只有同一類或結構中的 可以訪問該型別或成員。pro...
C 訪問 修飾符
例 internal class a public class b a 是不允許的 public class c是不允許的.msdn參考 訪問修飾符 c 程式設計指南 所有型別和型別成員都具有可訪問性級別,用來控制是否可以在您程式集的其他 中或其他程式集中使用它們。您在宣告型別或成員時使用以下訪問修...
C 訪問修飾符
public 公開的公共的 private 私有的,只能在當前類的內部訪問,類中的成員如果不加訪問修飾符,預設就是 private protected 受保護的,只能在當前類的內部以及該類的子類中訪問。internal 只能在當前專案中訪問。在同乙個專案中,internal 和public 的許可權...