Java:与子类的接口

  • 本文关键字:接口 子类 Java java
  • 更新时间 :
  • 英文 :


我正在使用带有子类的接口。我收到错误:

令牌

"{"、{ 应在此令牌之后出现语法错误 此行处有多个标记 - 方法断点:测试子类 [条目] - 做某事(字符串) - 令牌上的语法错误")", ;预期 - 令牌"(", ;预期 - 实现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){
} 
}

最新更新