到現在接口和抽象類還是有很多人對這兩種情況不能很好的應用
前些天在網上看到有位仁兄說了:接口是給外人用的,而抽象類是給自家子孫用的,哈哈,這句話我個人認爲很是經典呀。
其實怎麼說了?讓我們去分解一下上面那句話。
“"接口是給外人用的”
接口和抽象類在大致的功能上沒什麼區別。但是在設計上和就從它表面的字面語義上去理解,接口就是對外的嘛,就是對外部客戶代碼提供的一組規則,它忌諱修改,但可以去擴展它。說個很簡單的例子,我們電腦主板上的IDE硬盤接口,它是T型的它有39個不同顏色的針,它可以接不同品牌的硬盤呀,有希捷,有IBM,有三星等。
接口外稱:IDE硬盤接口
規則:T型的它有39個不同顏色的針
客戶端:希捷硬盤,IBM硬盤,三星硬盤。。。。。。還會有更多
“抽象類是給自家子孫用的”
很對很對,在你做一個功能模塊時,你會考濾到模塊以後的維護或是更具體功能的擴展,你會對其內部做一些抽象去隔離它的變化。爭對具體的東西做一些抽象類,抽象類裏面根據具體情況還可以加一些具體的實現方法。中心思想就是讓這個模塊可維護性提高。比如希捷硬盤,IBM硬盤,三星硬盤等,它們的存儲介質又有不同,有玻璃磁盤,有鋼片磁盤等等,但是不管什麼介質,讓它們轉動的軸是一樣的呀。這個軸就是一個抽象體呀。根據產商不同可以在軸上增加具體的功能,IBM加了一些防震芯片,三星的加了數據備份芯片等等。可以把這些芯片看作抽象類裏的具體方法。
總的來說,在設計層理解接口和抽象類是兩個完全不同的東西。
個人解理也不怕各位開發朋友扔磚頭,歡迎你們扔磚頭吧〔技術這東西就是要交流〕