我正在學習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 {
}
的書說,員工將繼承SingerPlayer.setRate()
方法,因爲它會覆蓋Singer.setRate()
方法。
我看不到它覆蓋此方法。
默認情況下,接口中的方法是抽象的,抽象方法不指定正文。所以首先你必須糾正'玩家'界面。 – Kartic
@Kartic接口中的默認方法現在是一件事http://www.tutorialspoint.com/java8/java8_default_methods.htm – jonhopkins
哦,是啊!我的錯。剛剛纔知道。 – Kartic