C# 封裝的存取修飾詞

來源:互聯網
上載者:User

標籤:資訊   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類的執行個體 訪問到。

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# 封裝的存取修飾詞

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.