2016-03-06 104 views
-1

我已經搜索並閱讀了我的課本,可能是一個基本問題,但似乎無法弄清楚。對於Java仍然是新的,所以請和我一起裸照。從抽象類調用非抽象方法

我有以下3個類。一個抽象的,一個接口和一個普通的類。 在Cat類中,我想調用Cat構造函數方法中的Animal類構造函數,但得到一個錯誤。我究竟做錯了什麼?

謝謝。

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"); 
    } 
1
public Cat(){ 
    super(0, "Unnamed"); 
}