標籤:資訊 src 技術分享 private str 繼承 編寫 沒有 需要
封裝 被定義為"把一個或多重專案封閉在一個物理的或者邏輯的包中"。在物件導向程式設計方法論中,封裝是為了防止對實現細節的訪問。
抽象和封裝是物件導向程式設計的相關特性。抽象允許相關資訊可視化,封裝則使開發人員實現所需層級的抽象。
C# 封裝根據具體的需要,設定使用者的存取權限,並通過 存取修飾詞 來實現。
一個 存取修飾詞 定義了一個類成員的範圍和可見度。C# 支援的存取修飾詞如下所示:
- Public:所有對象都可以訪問;
- Private:對象本身在對象內部可以訪問;
- Protected:只有該類對象及其子類對象可以訪問
- Internal:同一個程式集的對象可以訪問;
- Protected internal:一個程式集內的對象,或者該類對象及其子類可以訪問
如果沒有指定存取修飾詞,則使用類成員的預設存取修飾詞,即為 private。
Public 存取修飾詞
Public 存取修飾詞允許一個類將其成員變數和成員函數暴露給其他的函數和對象。任何公有成員可以被外部的類訪問。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program1 { public int a; public int b; public int AddData() { return a + b; } public void Display() { Console.WriteLine("a: {0}", a); Console.WriteLine("b: {0}", b); Console.WriteLine("和: {0}", AddData()); } } class Program2 { static void Main(string[] args) { Program1 a = new Program1(); a.a = 3; a.b = 5; a.Display(); Console.ReadLine(); } }}
當上面的代碼被編譯和執行時,它會產生下列結果:
a: 3b: 5和: 8
上面程式中,class program1 中變數和函數被聲明為 public, 因此可以被下面的program2中Main()函數 使用program1類的執行個體 a 訪問到。
Private 存取修飾詞
只有同一個類中的函數可以訪問它的私人成員,即使是類的執行個體也不能訪問它的私人成員。如果將上面程式類 program1中 a,b前的聲明改為 private ,在用類的執行個體對它們進行訪問時會出現下面提示:
在這種聲明下,在其他類中為了使用(操作)這些數值,可以在這些數值所在的類下編寫可以操作這些數值的函數,然後在其他類中訪問這些函數,程式如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program1 { private int a; private int b; public void Acceptdetails() { Console.WriteLine("請輸入a:"); a = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("請輸入b:"); b = Convert.ToInt16(Console.ReadLine()); } public int AddData() { return a + b; } public void Display() { Console.WriteLine("a: {0}", a); Console.WriteLine("b: {0}", b); Console.WriteLine("和: {0}", AddData()); } } class Program2 { static void Main(string[] args) { Program1 a = new Program1(); a.Acceptdetails(); a.Display(); Console.ReadLine(); } }}
運行結果如下:
請輸入a:5請輸入b:4a: 5b: 4和: 9
Protected 存取修飾詞
Protected 存取修飾詞允許子類訪問它的基類的成員變數和成員函數。這樣有助於實現繼承。
Internal 存取修飾詞
Internal 訪問說明符允許一個類將其成員變數和成員函數暴露給當前程式中的其他函數和對象。換句話說,帶有 internal 存取修飾詞的任何成員可以被定義在該成員所定義的應用程式內的任何類或方法訪問。
Protected Internal 存取修飾詞
Protected Internal 存取修飾詞允許在本類,衍生類別或者包含該類的程式集中訪問。這也被用於實現繼承。
C# 封裝的存取修飾詞