017-005-008

ダイヤモンド継承問題の解決

上級

問題説明

ダイヤモンド継承問題の解決

この問題では: 2つのインターフェイスの同名デフォルトメソッドの競合を解決するAmphibianクラスを実装し、メソッドオーバーライドとインターフェイスの明示的呼び出し(Walker.super.move()など)の結果を標準出力に表示するプログラムを作成します。

学習目標: 複数のインターフェイスで同名のデフォルトメソッドが定義されている場合の解決方法を理解する

概要

2つのインターフェイスWalkerSwimmerが同じシグネチャのデフォルトメソッドmove()を持つ場合、実装クラスでの競合を解決します。

仕様

  • Walkerインターフェイス: デフォルトメソッドmove()が "Walking" を出力
  • Swimmerインターフェイス: デフォルトメソッドmove()が "Swimming" を出力
  • Amphibianクラス: 両方のインターフェイスを実装
    • move()をオーバーライドして "Walking and Swimming" を出力
    • walkOnly()メソッドでWalker.super.move()を呼び出し
    • swimOnly()メソッドでSwimmer.super.move()を呼び出し
  • mainメソッドで3つのメソッドすべてを呼び出す

出力形式

Walking and Swimming
Walking
Swimming

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録