―Javaプログラミングの前提知識―
2003/2/27
インターフェイスとは |
ワンポイントQuestion |
以下のようなソースコードがあります。
public interface DefAction { |
次の説明のうち、誤っているものはどれですか? (複数選択)
|
配列の宣言方法 |
インタフェースとはクラス定義の雛型として使用するものです。その中には定数とメソッドを定義できますが、メソッドには処理の実装がされません。 インタフェースの定義はキーワード「interface」を使用して次のようになります。
interface インタフェース名 { |
インタフェース宣言ではクラス宣言と同じく、変数やメソッドを定義します。またパッケージ化することもできるので、別パッケージから利用したい場合はクラス定義と同様にpublic指定しておきます。
しかし、正確には以下のような点でクラスとは異なります。
- キーワード「interface」を使って宣言します。
- インタフェース内のフィールドは必ず定数とします。
- インタフェース内のメソッドは処理を記述しません。
- インタフェースからインスタンスは作成できません。
例) |
public interface MyInterface { |
また、クラスと同様にインタフェースを派生した別のインタフェースを作成することも可能です。
例) |
public interface SubInterface extends
MyInterface { |
インタフェースからオブジェクトを作成することはできません。上記例の続きで
MyInterface my = new MyInterface(); |
とするとコンパイルエラーになります。
インタフェースはクラスに実装して使用します。クラスに実装する場合、キーワード「implements」を使用して次のようになります。
class クラス名 implements インタフェース名 { // クラス定義 } |
例) |
public class MyClass implements MyInterface
{ |
インタフェースを実装したクラスは、インタフェースに宣言されている全メソッドを必ずクラス定義に含めなくてはいけません(上の例のstart()、stop())。
また、1つのクラスに対して複数のインタフェースを実装することもできます。
例) |
public class MyClass implements MyInterface,
OtherInterface { // クラス定義 } |
このことから、インタフェースを実装したクラスは、インタフェースに宣言されたメソッドや変数を必ずもつことになります。また、別クラスでも同じインタフェースを実装している場合は、それぞれのクラスに同じメソッド、変数が存在することになります。
そのため、同じインタフェースを実装したすべてのクラスには、必要なメソッドや変数が定義されていると保証されることになります。
システムの規模が大きくなった場合などにインタフェースを使うと、仕様の統一をはかることができます。
本設問の選択肢Bで、DefActionはインタフェースなのでextends指定ではありません。また、インタフェースそのものをnewすることはできませんが、インタフェースの変数にそのインタフェースを実装したクラスのオブジェクトを代入することは可能なので、選択肢Cは正しい説明です。
POINT | ||||||
●public指定されたインタフェース内では、暗黙的に定数はpublic static final、メソッドはpublic
abstractとなります。
|
KEYWORD |
■派生 ■マーカインタフェース |
ワンポイントQuestionの解答 |
正解 B、E
Java2ラーニングブック
−310-035 編− 本記事は@ITハイブックスシリーズ「Java2ラーニングブック −310-035 編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|