2016-02-25 4 views
-2

Я использую интерфейс с подклассом. не я получаю не ошибок:Java: интерфейс с подклассом

Синтаксис ошибку на маркер "{", {ожидается, после этого маркера нескольких маркеров на этой линии - Метод останова: TestSubClass [ввод] - DoSomething (String) - Синтаксическая ошибка на токене ")"; Ожидается, - ошибка синтаксиса на маркер «(»,; ожидается - реализует TestInterface.doSomething Синтаксис ошибки, вставьте «}», чтобы завершить ClassBody

Из моего кода, я думал, что я реализовал все ОК Это lokking. Ф.О. добавочный } и я не могу понять, почему. Я правильно назвал 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){ 

    } 
} 
+0

Начала углубленного кода правильно, что сделает его гораздо более разборчивым. – chrylis

ответ

1
public class TestSubClass extends TestBaseClass implements TestInterface{ 
    public TestSubClass(String name) { 
     super(name); 
    } 

    public void doSomething (String text){ 
    } 
} 

Вы не можете просто позвонить super(name); в классе, он должен быть внутри конструктора.

1

super(name); не может существовать сама по себе внутри TestSubClass. Где конструктор?

0
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){} 
} 
0

Как следует @Kayaman, необходимо определение конструктора делегировать конструктор суперкласса:

public class TestSubClass extends TestBaseClass implements TestInterface{ 

    public TestSubClass(String name){ 
     super(name); 

    } 


public void doSomething (String text){ 
} 
} 
Смежные вопросы