
―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ジャパン)
- Webの表示速度を遅くする「SSLハンドシェイク」とは (2010/2/9)
安全性を担保しようとWebページにSSLを適用すると、負荷の高い処理が実行される。速度と安全性は両立できるのか? - クラウド活用「雲活」のために押さえるべき39のポイント (2010/2/2)
活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介 - 再利用性の高いクラス作成に重要な“アクセス制御” (2010/1/28)
Javaのアクセス修飾子public、private、protectedや、Eclipseで簡単に作れるアクセサメソッドgetter、setterについて解説 - DB設計の神ツール「ERMaster」なら、ここまでできる (2010/1/21)
直感的なUIに、カスタマイズ可能な、Excel出力のテーブル定義書、辞書機能など多機能なERモデリングの無料Eclipseプラグインです
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |







