標籤: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# -- 封裝