
―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ハイブックス」サイトでご覧いただけます。 |
![]() |
TechTargetジャパン
- EclipseでScalaプログラミングを始めるための基礎 (2012/2/10)
概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します - 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

