私はJavaを学び、インターフェイスの継承について混乱しています。本Javaインターフェイスの継承の競合するメソッド
public interface Singer {
void sing();
void setRate(double rate);
double getRate();
}
public interface Player {
void play();
void setRate(double rate);
default double getRate() {
return 300.0;
}
}
public interface SingerPlayer extends Singer, Player{
// Override the getRate() method with a default method that calls the
// Player superinterface getRate() method
@Override
default double getRate() {
double playerRate = Player.super.getRate();
double singerPlayerRate = playerRate * 3.5;
return singerPlayerRate;
}
}
public class Employee implements Singer, SingerPlayer {
}
本からの例では、それがSinger.setRate()
メソッドをオーバーライドするため、従業員がSingerPlayer.setRate()
メソッドを継承しますと言います。
私はこのメソッドをオーバーライドしていません。
デフォルトでは、interfaceのメソッドは抽象メソッドであり、抽象メソッドはボディを指定しません。だからまず第一にあなたは 'プレーヤー'のインターフェイスを修正する必要があります。 – Kartic
@Karticインターフェースのデフォルトのメソッドは現在のものですhttp://www.tutorialspoint.com/java8/java8_default_methods.htm – jonhopkins
ああ、そうです!私の間違い。ちょうど今知りました。 – Kartic