インタフェースを実装する
出力はどれか。
public class Main {
public static void main(String[] args) {
Greeter g = new Japanese();
System.out.println(g.hello("Ken"));
}
}
interface Greeter {
String hello(String name);
}
class Japanese implements Greeter {
public String hello(String name) { return "こんにちは " + name; }
}
- A
こんにちは Ken - B
hello Ken - C コンパイルエラーになる
- D 実行時に例外が発生する
正解と解説を見る
正解: A
- A: 変数の型は Greeter でも、実体は Japanese なので Japanese の hello() が呼ばれます。
- B: hello という文字列はどこにもありません。Japanese の実装が "こんにちは " + name を返します。
- C: Japanese はインタフェースのメソッドを public で実装しているので、コンパイルできます。
- D: 例外になる処理はありません。
ポイント
- インタフェースの型の変数に、実装クラスのインスタンスを入れられます。