C#面向對象三大特性之一:封裝


面向對象的三大特性:封裝、繼承、多態。

1.封裝概念

封裝:每個對象都包含有它能進行操作的所有信息,這個特性稱為封裝。這樣的方法包含在類中,通過類的實例來實現。

2.封裝的優點

A.良好的封裝能夠減少耦合(比如實現界面和邏輯分離)

B.可以讓類對外接口不變,內部可以實現自由的修改

C.類具有清晰的對外接口,使用者只需調用,無需關心內部

D.因為封裝的類功能相對獨立,因此能更好的實現代碼復用

E.可保護代碼不被無意中破壞,通過私有字段等實現內部。注意:這里的代碼保護不是指代碼本身的加密,而是對不想外部更改的代碼通過私有實現。

封裝實例:我們單位養了一只價值800塊錢,黃色的的牧羊犬,有陌生人來的時候,就會叫幾聲,當然越是陌生程度越高,叫的次數越多。對這樣一個事務的處理上,可以利用面向對象的封裝特性,代碼實現如下:

復制代碼
 1 /// <summary>
 2 /// 狗狗類
 3 /// </summary>
 4 class Dog
 5 {
 6     string _dogName;
 7     readonly Color _dogColor=Color.Yellow;
 8     readonly double _dogPrice = 800.00;
 9     int _shoutNumber;
10 
11     /// <summary>
12     /// 構造函數
13     /// </summary>
14     /// <param name="dogName"></param>
15     public Dog(string dogName)
16     {
17         DogName = dogName;
18     }
19 
20     /// <summary>
21     /// 狗狗名字 公有屬性
22     /// </summary>
23     public string DogName
24     {
25         get { return _dogName; }
26         set { _dogName = value; }
27     }
28     /// <summary>
29     /// 狗狗顏色 只讀屬性 (顏色一出生就是這個顏色,這里只提供只讀,當然這里不考慮染色)
30     /// </summary>
31     public  Color DogColor
32     {        
33         get { return _dogColor;}            
34     }
35     /// <summary>
36     /// 狗狗價格 只讀屬性 (這是買來的價格,歷史是不可以修改的)
37     /// </summary>
38     public  double DogPrice
39     {
40         get { return _dogPrice; }
41     }
42 
43     /// <summary>
44     /// 狗叫的次數 (不同的陌生人來,叫的次數不同)
45     /// </summary>
46     public int  ShoutNumber{
47         set{_shoutNumber=value;}
48         get { return _shoutNumber; }
49     }
50 
51     /// <summary>
52     /// 狗叫的方法
53     /// </summary>
54     public void  Shout()
55     {
56         int i=0;
57         string ShoutNum="";
58         do
59         {
60             ShoutNum += "旺!";
61             i++;
62         } while (i <= ShoutNumber);
63         MessageBox.Show(ShoutNum);
64     }        
65 }
復制代碼

 

上面的Dog類就是對狗狗的全部信息,包括它的價格,顏色,叫聲,名字等封裝成一個類,以方便外部調用。對狗狗的價格和顏色使用了只讀屬性,因為它買來的歷史價格和顏色是不可以更改的(染毛暫不考慮)。通過封裝的思想我們可以增加狗狗體重等其它公有屬性,而不會影響到外部接口的調用,對私有的只讀屬性做到了保護。

     相信通過這兩個實例,已經完全對封裝熟悉了。假如我們的狗狗又生了一個寶寶,他的很多特征都基本相同,我們是不是又要復制一次這個類呢?這就要用到面向對象的另一個重要特性——繼承,下面會慢慢介紹。

歸納一下封裝的要點

要點:

1.封裝,就是把一個對象所能操作的所有信息放在一起

2.封裝能減少耦合,保持統一的對外接口,內部修改不影響外部調用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM