接口:
package II_1_b;
public interface Bezeichnung {
public String Bezeichnungi = "Hallo";
public abstract void setBezeichnung();
}
班级:
package II_1_b;
public class Speerwurf extends SportDaten implements Bezeichnung {
private double weite;
@Override
public void setBezeichnung(){ //Here we want to Override the String in
Bezeichnungi = "Test"; //the Interface
}
public Speerwurf(String n, double w, String bez) {
super(n);
this.weite = w;
bez = Bezeichnungi;
}
@Override
public void display() {
System.out.println("Speerwurf von " + this.SportlerName + ":\n"
+ weite + " Meter " + Bezeichnungi);
}
}
您可以在此处查看我们的代码,我对问题区域进行了评论,希望您能为我们提供帮助。 Stackoverflow告诉我要添加更多详细信息,所以我要描述一下午饭所要吃的东西:我想我会让自己成为TK-Pizza,也许2。我经常很饿。
答案 0 :(得分:2)
String Bezeichnungi是最终的,因此不能被覆盖。
答案 1 :(得分:0)
正如@slaw所述,接口中的字段不能更改,因此是静态的和最终的。
此外,没有在接口中声明字段的感觉,因为它仅声明某种行为而不声明状态。为了使事情像您在此处显示的那样工作,您需要使用abstract
类:
package II_1_b;
public abstract class Bezeichnung {
public protected String Bezeichnungi = "Hallo";
public abstract void setBezeichnung();
}
具体课程:
package II_1_b;
public class Speerwurf extends Bezeichnung { //think about how to handle SportDaten!
private double weite;
@Override
public void setBezeichnung(){ //Here we want to Override the String in
Bezeichnungi = "Test"; //the Interface
}
public Speerwurf(String n, double w, String bez) {
super(n);
this.weite = w;
bez = Bezeichnungi;
}
@Override
public void display() {
System.out.println("Speerwurf von " + this.SportlerName + ":\n"
+ weite + " Meter " + Bezeichnungi);
}
}
由于我们不知道您的具体用例,因此,除了告诉您为什么它无法正常工作之外,我们无济于事