学習雑記 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;とした方がわかりやすい。