我正在使用带有子类的接口。我收到错误:
令牌"{"、{ 应在此令牌之后出现语法错误 此行处有多个标记 - 方法断点:测试子类 [条目] - 做某事(字符串) - 令牌上的语法错误")", ;预期 - 令牌"(", ;预期 - 实现TestInterface.doSomething。 语法错误,插入"}"以完成类体
从我的代码中,我认为我已经实现了一切正常。这是一个额外的}
,我看不出为什么。我认为我已经正确地调用了super()
,但围绕doSomething方法仍然存在错误。有什么提示吗?
public interface TestInterface {
public void doSomething (String text);
}
public class TestBaseClass {
private String name;
public TestBaseClass() {
}
public TestBaseClass(String name){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class TestSubClass extends TestBaseClass implements TestInterface {
super(name);
public void doSomething (String text){
}
}
public class TestSubClass extends TestBaseClass implements TestInterface{
public TestSubClass(String name) {
super(name);
}
public void doSomething (String text){
}
}
你不能只在类中调用super(name);
,它必须在构造函数中。
super(name);
不能单独存在于TestSubClass
内。构造函数在哪里?
public class TestSubClass extends TestBaseClass implements TestInterface{
//This should be called inside a constructor
super(name);
//Ok here
public void doSomething (String text){}
}
这样做:
public class TestSubClass extends TestBaseClass implements TestInterface{
public TestSubClass (){
super(name);
}
public void doSomething (String text){}
}
正如@Kayaman暗示的那样,你需要一个构造函数定义来委托给超类的构造函数:
public class TestSubClass extends TestBaseClass implements TestInterface{
public TestSubClass(String name){
super(name);
}
public void doSomething (String text){
}
}