0
0

More than 3 years have passed since last update.

インターフェースと抽象クラスの違い

Posted at

インターフェースと抽象クラスの違い

抽象クラス

抽象クラスはabstractメソッドを付ける事で強制出来る、メソッドは通常通り作れる
⇒継承させることで、サブクラスのメソッドを強制的に付ける事が出来る。
 つまり、派生したクラスに同一のメソッドを持たせる事と強制的にメソッドを作らせる事で
 強制力を持たせるクラスが作れる

 チームには、Aというクラスの中にはみんなが使う税率メソッドをつかって共通化されているけど
 地域の税金は、地域によってちがうから個々の派生したクラスでメソッドを作ってね。

インターフェース

⇒インターフェースをimplementしたクラスは、インターフェースの箱に入れる事ができるつまり、インターフェースをimplementしておけば、条件によってAとBと切り替えが出来る。

サンプル(インターフェース)

public interface ControlPanelIf {
    void play();
    void pause();
    void stop();
    void forwardFast();
    void backwordFast();
}
これを実装するクラスは以下のコードになります。

実際はもっと複雑になることが多いですが、サンプルということで書いていきましょう。

public class DvdDeck implements ControlPanelIf {
    @Override
    public void play() {
        System.out.println("DVD再生");
    }

    @Override
    public void stop() {
        System.out.println("DVD再生停止");
    }

    @Override
    public void pause() {
        System.out.println("DVD一時停止");
    }

    @Override
    public void forwardFast() {
        System.out.println("DVD早送り");
    }

    @Override
    public void backwardFast() {
        System.out.println("DVD早戻し");
    }
}
このDVDDeckクラスを使うクラスが以下とします。

public class DeckUser {
    public static void main(String[] args) {
        ControlPanelIf myDeck = createDeck(args[0]);

        myDeck.play();
        myDeck.forwardFast();
        myDeck.pause();
        myDeck.play();
        myDeck.backwardFast();
    }

    private static ControlPanelIf createDeck(String deckType) {

        ControlPanelIf deck;
        if(deckType.equals("DVD") {
            deck = new DvdDeck();
        } else if(deckType.equals("BluRay") {
            deck = new BluRayDeck();
        } else if(deckType.equals("HDD") {
            deck = new HddRayDeck();
        } else {
            deck = new DvdDeck();
        }
        return deck;
    }
}

参考資料
https://www.slideshare.net/graminmakeall/java-43178044?qid=6a49c149-fcb0-4aa8-87d0-2e4e2c18362b&v=&b=&from_search=5

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0