介面最關鍵的作用,也是使用介面最重要的一個原因:能上溯造型至多個基礎類。使用介面的第二個原因與使用抽象基礎類的原因是一樣的:防止客戶程式設計師製作這個類的一個物件,以及規定它僅僅是一個介面。這樣便帶來了一個問題:到底應該使用一個介面還是一個抽象類呢?若使用介面,我們可以同時獲得抽象類以及介面的好處。所以假如想建立的基礎類沒有任何方法定義或者成員變數,那麼無論如何都願意使用介面,而不要選擇抽象類。事實上,如果事先知道某種東西會成為基礎類,那麼第一個選擇就是把它變成一個介面。只有在必須使用方法定義或者成員變數的時候,才應考慮採用抽象類。
/** * Created by xfyou on 2016/11/3. * Java 繼承和介面演示 */ public class Adventure { static void t(CanFight x) { x.fight(); } static void u(CanSwim x) { x.swim(); } static void v(CanFly x) { x.fly(); } static void w(ActionCharacter x) { x.fight(); } public static void main(String[] args) { Hero i = new Hero(); t(i); u(i); v(i); w(i); } } interface CanFight { void fight(); } interface CanSwim { void swim(); } interface CanFly { void fly(); } class ActionCharacter { // 父類中實現了子類中繼承的介面方法 public void fight() { } } /** * 必須先 extends 然後再 impplements */ class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly { @Override public void fly() { } @Override public void swim() { } }