参照型の一種、インターフェイスを習得する:ソースコードで学ぶ SJC-P 5.0 ドリル(6)(2/2 ページ)
本連載は、サン・マイクロシステムズ認定のJava資格Sun Certified Programmer for Java 2 Platform 5.0(SJC-P5.0)に対応しています。最新の出題傾向に基づいて、ソースコードの問題を中心に毎回模擬問題を1問出題します。ソースコードに慣れながら、SJC-P合格を目指して頑張りましょう。
解答
D
解説
1行目はFooインターフェイスを定義しています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
2〜4行目ではFooインターフェイスを実装したXクラスを定義していますが、Fooインターフェイスのexec()メソッドを正しくオーバーライドしているため構文上に問題はありません。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
5〜7行目ではそのXクラスを継承したYクラスを定義していますが、構文上に問題はありません。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
8行目のZクラスはYクラスをスーパークラスに持ち、Fooインターフェイスを実装したクラスとして定義されています。extends、implementsの順番でクラス宣言がされているため、問題ありません。implements、extendsの順番で記述するとコンパイルエラーとなります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
従って、演習問題のソースコードをコンパイル・実行すると、 12行目の呼び出しに対して3行目が実行、13行目の呼び出しに対して6行目が実行、 14行目の呼び出しに対して6行目が実行され、実行結果が「XYY」となります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
さらにもう一歩
あるインターフェイスを基に、サブインターフェイスを作成することができます。継承関係を持つため、サブインターフェイスを作成する際にはextendsキーワードを使用します。また、インターフェイスの継承は、extendsキーワードの後に複数のインターフェイスを指定することが許可されています。
ただし、サブインターフェイスを実装した具象クラスは、スーパーインターフェイスおよびサブインターフェイスのメソッドをすべてオーバーライドする必要があります(サンプルコード2)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
筆者紹介
山本道子
有限会社Ray代表。千葉県出身。一般事務、派遣を経て2000年サン・マイクロシステムズ入社。J2SEのほか、J2EEなどサーバサイドJavaコース担当およびテキスト開発に携わる。2004年退職後、有限会社Rayを設立し、システム開発、インストラクタ、執筆などを手掛けている。
Copyright © ITmedia, Inc. All Rights Reserved.