質問: interface,extend,implementのちがい お世話になります、 javaを勉強しているのですが、 interface,extend,implementの使い分けがわかりません。 私の解釈としては、 (1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。 (2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。 (3)implementは...,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか? とにかくこの3つのを使い分けるコツとかあれば教えてください。 よろしくお願いします。
回答: いまいち自信が在りませんが・・・ 1)はメソッドの名前と変数だけを提供するクラスを作成する時に 使用するものだと思います。 例えば、「fileaccess」のインターフェースクラスを作成して、 メソッドとして「fileread」と「filewrite」を用意したとしましょう。 すると、このインターフェースを実装しているクラスなら、どれでも この二つのメソッドを持っている事になるので、そのクラスに対して 気兼ねなく(?)メソッドの呼出しが出来ます。 fileaccessインターフェースを実装しているクラスであればどれでも、 ファイルの読み書きを提供していると言う事になるわけです。 インターフェースは多くのクラスで共通の関数名を使えるようにするものだ と、僕は思っています。(処理の内容自体はクラスによって異なりますが。) 2)の「extend」は親クラスを継承して新しく子クラスを作成する時に 使用します。文字入力域の子クラスを作成して半角文字しか入力できない オリジナルの入力域クラスを作成する時などに使います。 3)の「implement」はインターフェースを実装する時に使うものだと 思っています。例えば、2)で作成したオリジナル入力域に対して 「fileaccess」インターフェースを実装すると、 ファイルの読み書き機能を搭載した半角文字しか入力できないオリジナルの 入力域を作成する事が出来ます。 以上でどうでしょうか?かなり大まかな説明ですが。 意味不明な部分が在りましたら、補足します。