MENU

【Java Silver】インタフェースの作成と実装の理解

インタフェースの理解を深めるために、次の問題に挑戦してみましょう。

問題

次のプログラムを実行した場合、正しい出力を選んでください。

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つのクラスLaserPrinterInkjetPrinterがそれを実装しています。

各クラスはprintメソッドを具体的に実装し、それぞれ異なるメッセージを出力します。

メインメソッドではPrinter型のmyPrinterInkjetPrinterのインスタンスを保持しているため、myPrinter.print()を呼び出したときにInkjetPrinterprintメソッドが実行されます。

したがって、答えはB. Printing via InkjetPrinterです。

目次