interfaceについて(+eclipseのショートカットについて)

開発をしている時、ここの処理は何をやっているのか気になったら、

コマンドタグを押しながら気になる箇所をクリックして宣言を見に行くようにはしていました。

しかし、宣言だけを追っていくと宣言の中にまた宣言があり、またその宣言の中にまた・・・

最後にはinterfaceにたどり着いて、結局気になる処理の内容は分からずじまいでした。

そもそもinterfaceをよく理解していなかったので調べました。


interfaceとは

内容に抽象メソッドしか持たないクラスのようなものをインタフェースと呼びます。クラスと並んで、パッケージのメンバーとして存在します。インタフェースはクラスによって実装 (implements) され、実装クラスはインタフェースで宣言されている抽象メソッドを実装します。 (http://msugai.fc2web.com/java/interface.htmlより引用)

interfaceの特徴

  • インタフェースを作成するときは、クラスが「何を行うか」取り決めを行う。
  • インタフェースはどの継承ツリーのどのクラスでも実装できる。
  • 実装クラスでは、全てのインタフェースメソッドを実装しなければならない。この時、実装メソッドは、必ず「public」 * 修飾子を付けなければならない。
  • インタフェース内のメソッドは必ず、抽象クラスとなる。
  • インタフェースアクセスレベルは変更(デフォルト、public)できる。尚、省略できるが、インタフェースは必ずabstractになる。
  • インタフェース内のメソッドはpublicかつabstractとなる。尚この二つは省略できる。また、abstractが暗黙的に付くので、「final」「synchronized」「native」「strictfp」「static」と一緒に宣言することはできない。
  • インタフェース内の変数は、publicかつfinalかつstaticとなる。尚これら3つは省略できる。すなわち、インタフェース内の変数は定数となるので、必ず初期化しなければならない。
  • インタフェースは他のインタフェースを複数拡張できる。しかし、実装はできない。
  • インタフェースは多態性に使用できる。 (http://www.booran.com/menu/java/interface.htmlより引用)

しかし、「宣言を開く」の他に「実装を開く」を使うと処理の内容を記述している箇所にたどり着けることにいまさら気づきました。