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

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

Javaのinterfaceは、こういうメソッド持ってますよ!というクラスに対しての仕様です。(interfaceはクラスじゃない)

java.util.ListはaddメソッドやaddAllメソッドなどを持っていますがinterfaceなので具体的なメソッドの中身(振る舞い)は書かれていません。

対してclassはそのメソッドがどういった事をするか具体的に書いているのがclassです。(具象クラスと言ったりもします)

なので

ArrayList<String> list = new ArrayList<>(); // NG

というように具体的なArrayListというクラスで変数を宣言するのではなく、Listというinterface(仕様)で宣言するのが正しいです。

List<String> list = new ArrayList<>(); // OK

interfaceは仕様で、implementは「実装する」という意味です。

ArrayListはクラスで、implements Listしているので、Listの仕様に沿ったクラスとなります。

コメント

タイトルとURLをコピーしました