前言
?????????關于封裝似舵,一般面試不會問太多诚些,三大特性問的最多的是多態(tài),后面文章會給大家介紹句占!
1.什么是封裝
????????舉個例子舔腾,一臺電腦溪胶,人們正常操控的是電源,網(wǎng)線稳诚,開關機哗脖,光驅,usb扳还,顯示器等對外顯現(xiàn)部分才避,而內部的cpu,主板氨距,顯卡桑逝,網(wǎng)卡等部分是不對外顯現(xiàn)的,也是不建議人們自行去修改的俏让,內部的核心組建被封裝在在了主機箱以內-這就是一個封裝的實例肢娘;
so,什么是封裝呢舆驶?
????????封裝其實就是包裝橱健,也可以說是信息的隱藏,是指利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起沙廉,使其構成一個不可分割的獨立實體拘荡,數(shù)據(jù)被保護在抽象數(shù)據(jù)類型的內部,盡可能地隱藏內部的細節(jié)撬陵,只保留一些對外接口使之與外部發(fā)生聯(lián)系珊皿。系統(tǒng)的其他對象只能通過包裹在數(shù)據(jù)外面的已經(jīng)授權的操作來與這個封裝的對象進行交流和交互。也就是說用戶是不知道對象內部的實現(xiàn)細節(jié)的巨税,但可以通過該對象對外的提供的接口來訪問該對象蟋定。
2.為什么要有封裝
談到為什么要有封裝,就得提到封裝到底有什么特點了草添;
1)隱藏具體實現(xiàn):對內修改不影響外部正常調用驶兜,不允許外部成員修改其隱藏的部分
????????這樣操作的好處在于安全,即當電腦無法開機的時候,維修人員修改內部組件抄淑,對我們而言是不可知的屠凶,我們不知道維修人員到底修改了哪些組件,?但結果就是我們能開機了-此處即對內修改不影響外部調用肆资;
2)更好的操控成員:將內部成員分類矗愧,private-僅內部可以操控,protected-可以繼承郑原,public-外部成員可以操控唉韭;
3)降低代碼耦合性:良好的封裝是可以降低代碼耦合性的,例如將主機的每個小部件進行封裝犯犁,usb属愤,光驅,鍵盤栖秕,鼠標等部件封裝成獨立個體春塌,當鼠標不能運作的時候晓避,不影響其他部件正常運行簇捍;
4)提升可復用性:每個部件都是獨立的個體,可以在多種環(huán)境下使用俏拱;例如封裝后的鼠標暑塑,既可以在筆記本上使用,也可以在臺式機上使用锅必。
3.封裝實例
1)可以看一下未進行任何封裝的例子:
2)進行簡單封裝驹愚,此處為了方便,就都寫在一個類里面了劣纲,方便大家觀察逢捺;實際運用,建議分開癞季;
3)再次進行改進
4)再次改進憔恳,將對外方法開放出來
4.面試回答封裝
? ? 眾所周知面試的時候不能撲拉撲拉的把這么多內容給他背下來;也沒有這么多扯淡的時間程梦;
????言簡意賅的概括封裝:
? ??封裝性就是把對象的屬性和服務組合成一個獨立的單位,提高復用性点把,降低耦合性,并盡可能隱藏內部實現(xiàn)屿附,提高安全性郎逃;
????最后告知大家,重要的還是理解設計原理挺份,帶著問題去看才能學到東西褒翰,當然可能有比較著面試的朋友沒什么時間準備,那就只能去背我們總結的了匀泊,希望能幫到正在找工作的您优训;
????寫的有不對的地方還請大家指出,我們會第一時間更正各聘, 您的支持是我們努力的更新的動力源泉揣非,歡迎大家將面試過程中遇到的問題發(fā)給我們,我們會第一時間整理更新躲因,希望能幫忙更多正在找工作的朋友早敬;