1. 程式人生 > 其它 >封裝的作用和含義

封裝的作用和含義

我要看電視,只需要按一下開關和換臺就可以了。有必要了解電視機內部的結構嗎?有必要碰碰映象管嗎?製造廠家為了方便我們使用電視,把複雜的內部細節全部封裝起來,只給我們暴露簡單的介面,比如:電源開關。具體內部是怎麼實現的,我們不需要操心。

需要讓使用者知道的才暴露出來,不需要讓使用者知道的全部隱藏起來,這就是封裝。說的專業一點,封裝就是把物件的屬性和操作結合為一個獨立的整體,並儘可能隱藏物件的內部實現細節。

我們程式設計要追求“高內聚,低耦合”。 高內聚就是類的內部資料操作細節自己完成,不允許外部干涉;低耦合是僅暴露少量的方法給外部使用,儘量方便外部呼叫。

程式設計中封裝的具體優點:

1. 提高程式碼的安全性。

2. 提高程式碼的複用性。

3. “高內聚”:封裝細節,便於修改內部程式碼,提高可維護性。

4. “低耦合”:簡化外部呼叫,便於呼叫者使用,便於擴充套件和協作。

【示例】沒有封裝的程式碼會出現一些問題

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 classPerson{ Stringname; intage; @Override publicStringtoString(){ return"Person[name="+name+",age="+age+"]"; } } publicclassTest{ publicstaticvoid
main(String[]args){ Personp=newPerson(); p.name="小紅"; p.age=-45;//年齡可以通過這種方式隨意賦值,沒有任何限制 System.out.println(p); } }

我們都知道,年齡不可能是負數,也不可能超過130歲,但是如果沒有使用封裝的話,便可以給年齡賦值成任意的整數,這顯然不符合我們的正常邏輯思維。

再比如說,如果哪天我們需要將Person類中的age屬性修改為String型別的,你會怎麼辦?你只有一處使用了這個類的話那還比較幸運,但如果你有幾十處甚至上百處都用到了,那你豈不是要改到崩潰。而封裝恰恰能解決這樣的問題。如果使用封裝,我們只需要稍微修改下Person類的setAge()方法即可,而無需修改使用了該類的客戶程式碼。