017-005-008
ダイヤモンド継承問題の解決
上級
問題説明
ダイヤモンド継承問題の解決
この問題では: 2つのインターフェイスの同名デフォルトメソッドの競合を解決するAmphibianクラスを実装し、メソッドのオーバーライドとインターフェイスの明示的呼び出し(Walker.super.move()など)の結果を標準出力に表示するプログラムを作成します。
学習目標: 複数のインターフェイスで同名のデフォルトメソッドが定義されている場合の解決方法を理解する
概要
2つのインターフェイスWalkerとSwimmerが同じシグネチャのデフォルトメソッド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
