23. C# -- 封裝

來源:互聯網
上載者:User

標籤:c#

什麼是封裝?

封裝就是將資料或函數等集合在一個個的單元中(我們稱之為類)。被封裝的對象通常被稱為抽象資料類型。 

使用封裝的意義?

封裝的意義在於保護或者防止代碼(資料)被我們無意中破壞。

封裝提供了一個有效途徑來保護資料不被意外的破壞。

 

下面我們看一些c#例子來學習這兩種方法用以封裝資料。第一種方法,我們使用傳統的存、取方法。第二種方法我們用屬性(property)。無論我們使用哪種的方法,我們的目標是在使用資料的同時不能使它受到任何的破壞和改變。有如下好處:

其一: 使用者只需要瞭解如何通過類的介面使用類,而不用關心類的內部資料結構和資料群組織方法。

其二:高內聚,低耦合一直是我們所追求的,用好封裝恰恰可以減少耦合

其三:只要對外介面不改變,可以任意修改內部實現,這個可以很好的應對變化

其四:類具有了簡潔清晰的對外介面,降低了使用者的學習過程

 

執行個體一:用傳統的讀、寫方法封裝

讓我們來看一個例子有一個類Department,為了操縱這個類中的資料(stringdepartname)我們定義了一個讀方法和一個寫方法。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{    //定義類    class Department{        private string departname;        public string GetDepartname(){            return departname;}        public void SetDepartname(string a){departname = a;}}   //用戶端實現,使用兩個不同方法來寫和讀資料     public class TestAnimal{         static void Main(){             Department d = new Department();             d.SetDepartname("ELECTRONICS");             Console.WriteLine("The departname is : " +d.GetDepartname());             Console.ReadLine();}}}

結果:

The departname is ELECTRONICS

 

執行個體二:用屬性

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{    //定義類    class Department{        private string departname;        public string Departname{            get { return departname; }            set { departname = value; }}}   //用戶端實現,使用兩個不同方法來寫和讀資料     public class TestAnimal{         static void Main(){             Department d = new Department();             d.Departname = "Communication";             Console.WriteLine("The departname is :{0} ", d.Departname);             Console.ReadLine();}}}

通過上面的例子,我們可以看到如何通過屬性來實現封裝。屬性具有兩種操作get和set。Get用來返回屬性域的值。Set通過value這個變數來給屬性域賦值。屬性可以設為唯讀(read-only)。這隻需屬性只具有一個set操作。

結果:

The departname is :Communication

 

參考:

http://blog.csdn.net/acmilanvanbasten/article/details/8625097


本文出自 “Ricky's Blog” 部落格,請務必保留此出處http://57388.blog.51cto.com/47388/1652438

23. 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.