学習雑記 JAVA13

抽象化プログラミング

 

interfaceのポイント

- 型を規定するだけで実装がない。

- 実装を持たない抽象メソッドを定義する。

- interfaceを実現するクラスは定義された抽象メソッドをオーバーライドする必要がある(強制)

- interface自身はインスタンス化できない。

- interfaceの継承やクラスの多重実現により、複数のinterfaceを同時に実現できる。

 

Classとinterfaceの違い

Class

- ポリモーフィズムを使って扱うための共通の型の定義(ここは同じ)

- どのようなメソッドを持つべきかという定義 => 具体的な処理 = 実装がある(具象メソッド)。

対して、interfaceはデータの型(扱い方)だけが規定される。

 

intefaceには抽象メソッドだけでなくフィールドも定義可能。しかし、定義できるフィールドは定数のみであることに注意が必要。

interfaceはClassと違い、インスタンス化できないので、値が変更できるフィールドを定義できない。定数は必ず何らかの値を持ち、そのため、定数の宣言は必ず初期化と一緒にしなければいけない。

 

public interface SampleInterface {

   int NUM;

}

*初期化していないため、コンパイルエラー

public interface SampleInterface {

   int NUM = 10;

}

*フィールド宣言と初期化を同時に実行

*また、その特性から暗黙的にpublic final staticと修飾されている。書く必要はないが明示的にpublic final static int NUM = 10;とした方がわかりやすい。