今日の一言
こんにちは、針山散策を今日もほのぼのと行います。
今日は、implementをメモしておこうと思います。
class クラスA implements インタフェースB
という書式で"インタフェースB"を実装した"クラスA"を定義する。という意味になります。
クラスAとインタフェースBの関係は点線矢印で表します。
クラスA
- - >
インタフェースB
比較としては直線矢印で記される親と子のクラスの関係です。
子クラス
→
親クラス
私なりのインタフェースの理解としては以下です。
インタフェースは関数仕様書のようなもの
メソッドをインタフェース内に明示しておくことで並行開発することが可能になると思います。複数人で開発する際、インタフェースを定義しておくことで、メソッド呼び出し側の開発と メソッド内部開発を同時に進めることが出来ると思います。
(C言語でいうところのプロトタイプ宣言のようなものでしょうか。)
インタフェースはすべて抽象メソッド
メソッド入り口だけ作って中身のない定義にすることで、 開発開始時に認識合わせが楽になるのだろうと思います。開発初期は、がっちり仕様を決めるのはほぼ不可能だし時間の無駄になるので 良い仕様です。
インタフェース内にフィールド変数は書かない
クラス自体は基本的にprivateなので、インタフェースにはそもそも書きません。というスタイルなのだと思います。
フィールドにアクセスしたい場合、getter()メソッド、setter()メソッドを作成しましょう。
インタフェイスのフィールドは全て定数
(例: public static final int dummy= 10;と定義できます。ここで、public static finalは省略されるので、
int dummy= 10;と書くことになります。
見た目はただのフィールドみたいですが実は定数です。)
class クラス名 implements インタフェース名でサブクラスを生成
そのサブクラス内にinterface内のメソッドを定義
(interfaceに定義しているメソッドに対して実装するので、overrideすることになります。)多重継承はOK
ということは、クラスA は独自のメソッドをoverride出来るということになります。class クラスA implements インタフェースB,インタフェースC,インタフェースD
の書き方はOK