Java繼承和介面

FrankYou發表於2016-11-03

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

/**
 * 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() {

    }
}

 

相關文章