MENU

【Java Silver】Java 言語の主要機能 – インターフェースと抽象クラスの理解

Java Silver試験の準備を進めましょう。今回はインターフェースと抽象クラスに関連する問題です。

問題

次のプログラムを実行した場合の出力はどれでしょうか?正しい選択肢を選んでください。

interface Flyable {
                void fly();
            }

            abstract class Bird implements Flyable {
                abstract void makeSound();
            }

            class Sparrow extends Bird {
                void makeSound() {
                    System.out.println("Chirp");
                }

                public void fly() {
                    System.out.println("Flying");
                }
            }

            public class Main {
                public static void main(String[] args) {
                    Sparrow sparrow = new Sparrow();
                    sparrow.makeSound();
                    sparrow.fly();
                }
            }

選択肢

  • A. Chirp
  • B. Flying
  • C. Chirp Flying
  • D. コンパイルエラー

答えと解説

回答を見る

答え

C. Chirp Flying

解説

解説のポイント:

  • インターフェースの実装
  • 抽象クラスとメソッドの実装

このプログラムでは、インターフェースFlyableを実装し、抽象クラスBirdを継承したSparrowクラスを用いています。

インターフェースはクラスが実装すべきメソッドを定義しますが、Flyableにはfly()メソッドが含まれています。このメソッドはSparrowクラスで実装されています。

Birdは抽象クラスであり、makeSound()という抽象メソッドを持っています。このため、具体的な下位クラスでmakeSound()メソッドを実装する必要があります。

SparrowクラスではmakeSound()をオーバーライドし、”Chirp”を出力します。さらに、Flyableインターフェースのfly()メソッドも実装しており、”Flying”と出力します。

したがって、s.parrowmakeSound()が”Chirp”を出力し、続くs.parrowfly()が”Flying”を出力するため、出力結果は “Chirp Flying” となります。

目次