作者
Allen
抽象方法是必須實現的方法
就象動物都要呼吸
但是魚用鰓呼吸
豬用肺呼吸
動物類要有呼吸方法
怎麼呼吸就是子類的事了
現在有很多討論和建議提倡用interface代替abstract類
兩者從理論上可以做一般性的混用
但是在實際應用中
他們還是有一定區別的
抽象類一般作為公共的父類為子類的擴展提供基礎
這裡的擴展包括了屬性上和行為上的
而接口一般來說不考慮屬性
只考慮方法
使得子類可以自由的填補或者擴展接口所定義的方法
就像JAVA王子所說的事件中的適配器就是一個很好的應用
用一個簡單的例子
比如說一個教師
我們把它作為一個抽象類
有自己的屬性
比如說年齡
教育程度
教師編號等等
而教師也是分很多種類的
我們就可以繼承教師類而擴展特有的種類屬性
而普遍屬性已經直接繼承了下來
而接口呢~還是拿教師做例子
教師的行為很多
除了和普通人相同的以外
還有職業相關的行為
比如改考卷
講課等等
我們把這些行為定義成無body的方法
作為一個集合
它是一個interface
而教師張三李四的各自行為特點又有不同
那麼他們就可以擴展自己的行為body
從這點意義上來說
interface偏重於行為
總之
在許多情況下
接口確實可以代替抽象類
如果你不需要刻意表達屬性上的繼承的話
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26846.html