介面最關鍵的作用,也是使用介面最重要的原因:能上溯造型至多個基礎類別。使用介面的第二個原因與使用抽象基礎類別的原因是一樣的:防止客戶程式設計師製作這個類別的一個對象,以及規定它只是一個介面。這樣便帶來了一個問題:到底該使用一個介面還是一個抽象類別呢?若使用接口,我們可以同時獲得抽象類別以及接口的好處。所以假如想創建的基礎類別沒有任何方法定義或成員變量,那麼無論如何都願意使用接口,而不要選擇抽象類別。事實上,如果事先知道某些東西會成為基礎類,那麼第一個選擇就是把它變成一個介面。只有在必須使用方法定義或成員變數的時候,才應考慮採用抽象類別。
/** * 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() { } }