インタフェースの理解を深めるために、次の問題に挑戦してみましょう。
問題
次のプログラムを実行した場合、正しい出力を選んでください。
interface Printer {
void print();
}
class LaserPrinter implements Printer {
@Override
public void print() {
System.out.println("Printing via LaserPrinter");
}
}
class InkjetPrinter implements Printer {
@Override
public void print() {
System.out.println("Printing via InkjetPrinter");
}
}
public class Main {
public static void main(String[] args) {
Printer myPrinter = new InkjetPrinter();
myPrinter.print();
}
}
選択肢
- A. Printing via LaserPrinter
- B. Printing via InkjetPrinter
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
B. Printing via InkjetPrinter
解説
解説のポイント:
- インタフェースの概要
- オブジェクト型と実際のクラス型
この問題では、インタフェースPrinter
が定義され、2つのクラスLaserPrinter
とInkjetPrinter
がそれを実装しています。
各クラスはprint
メソッドを具体的に実装し、それぞれ異なるメッセージを出力します。
メインメソッドではPrinter
型のmyPrinter
がInkjetPrinter
のインスタンスを保持しているため、myPrinter.print()
を呼び出したときにInkjetPrinter
のprint
メソッドが実行されます。
したがって、答えはB. Printing via InkjetPrinterです。