auの日記

プログラミング初心者の日記。(auはハンドルネームです)

interfaceとabstractsの違い

auです。

Javaをやってると必ず引っかかる(であろう)インターフェース抽象をやったのでまとめます。

インターフェース

インターフェースは、処理内容を書かずに宣言して、あとで具体的な処理を書く場合に使います。

こうすることで、スーパークラスが一つという制限になることなく、必要に応じて処理を変えることができます。

音楽の再生と動画の再生を「play」というメソッド名で統一する場合などに使えます。

public <span style="color: #ff0000">interface</span> PlayContents {
	String play();
}

具体的な処理は、interfaceを実装するクラスで書いていきます。

class Music implements PlayContents {
    public String play(){
    // 処理内容
    }
}

ちなみに、継承と実装を同時に行う場合は順番が存在するっぽいので書いておきます。

class クラス名 extends 継承 implements 実装 {
}

抽象

抽象クラスはインターフェースと比べて難しかったです。


抽象クラスは、抽象メソッドを一つ以上持っているクラスのことです。

抽象メソッドを宣言することで、強制的にオーバーライド(上書き)がおきます。

抽象メソッドは、サブクラスに継承されることで使用することができ、必ず処理を書かなければいけないということになります。

処理の書き忘れを防ぐ意図や、同じメソッド名を使って製品を作る際などに使われるようです。要は、大規模な開発になると使われる、バグを防ぐためのものらしいですね。

それに加え、

必要か分かりませんが、書き方を書いておこうと思います。

abstract class クラス名 {
    abstract 戻り値の型 メソッド名(引数...);
}

interfaceの中に抽象メソッドを宣言しておいて、抽象クラスでメソッドを実装するという方法もできました。

いつどうやって使うのかは、その時にならないとイメージが固まらない気がします・・・。