2016-03-06 4 views
-1

Ive искал и читал мой учебник по тому, что, вероятно, является основным вопросом, но, похоже, не может понять его. Все еще новичок в java, поэтому, пожалуйста, со мной.Вызов не абстрактных методов из абстрактного класса

У меня есть следующие 3 класса. Один абстрактный, один интерфейс и обычный класс. В классе Cat я хочу вызвать конструкторы класса Animal внутри метода конструктора Cat, но получить ошибку. Что я делаю не так?

спасибо.

package MyPet; 
public interface WalkMe { 
     public void walk(); 
} 


package MyPet; 
public abstract class Animal{ 
    private int legs; 
    private String name; 

    public abstract String toString(); 

    public Animal(int legs_in, String name_in){ 
      setLegs(legs_in); 
      setName(name_in);  
       } 
    ...removed the rest of code 
} 

package MyPet; 
public class Cat extends Animal implements WalkMe{ 

    public void walk() { 
     System.out.println(" "); 
    } 

    public String toString() { 
    } 

    public Cat(){ 
     Animal(0, "Unnamed"); //THIS IS WHAT I NEED HELP WITH I am trying to call the animal Constructor 
    } 

    public static void main(String[] args) { 
     Cat[] cats = new Cat[4]; 
     cast[0] = new Cat(); 
    } 
} 
+0

Это отвечало на мои вопросы. Я не знал ключевое слово «супер», поэтому я не смог найти его специально. Но это очень помогло! – Kim

ответ

1

Аннотация Конструкторы не предназначены для вызова с использованием их имени. В подклассе, чтобы вызвать один, вы используете super(args);.

Таким образом, вы бы изменить:

public Cat(){ 
    Animal(0, "Unnamed"); 
} 

в

public Cat(){ 
    super(0, "Unnamed"); 
} 

, который должен решить вашу проблему.

+0

Точно то, что мне нужно. Исправлен мой код, спасибо! – Kim

1

Супер класс должен быть ссылаются на ключевом слове super, а не имя его

public Cat(){ 
     super(0, "Unnamed"); 
    }