2017-05-01 4 views
-6

Ich lerne JAVA und zur Zeit habe ich ein Problem mit der Verwendung von Super. Aus irgendeinem Grund zeigt sie einen Fehler:Fehler mit Super. in JAVA

Exception in thread "main" java.lang.Error: Unresolved compilation problems: The field Animal.n is not visible The field Animal.m is not visible*

Wie kann ich das Problem beheben? Ich weiß, dass String n und int m auf privat gesetzt sind, da ich versuche, das "super" zu verwenden. Vielen Dank im Voraus. Der Teil des Codes unter i Problem habe mit dem „Super (n, m)

public class Zoo 

{ 

public static void main(String[] args) 
    { 
    Animal[] cat= new Animal[5]; 
    BigAnimal big = new BigAnimal("Roro",20,true,true); 

    cat[0] = new Animal ("Mauie",5,true); 
    cat[1] = new Animal ("Frankie",7,false); 
    cat[2] = new Animal ("Zo-Zo",8,false); 
    cat[3]= new Animal ("Alice",12,true); 
    cat[4]= big; 

    System.out.println(cat[0].getName()); 
    System.out.println(cat[0].something(10)); 

    } 



} 

class Animal 

{ 

    private String n; 
    private int m; 


    public Animal(String name,int meals, boolean doesitbite) 

    { 
     n=name; 
     m=meals; 
    } 

} 

class BigAnimal extends Animal 

{ 
    boolean doesitlove; 

    public BigAnimal (String name, int meals, boolean doesitbite, boolean doesitlove) 
     { 

      super(n,m); 
      doesitlove=true; 
     } 

} 
+7

'Tier' hat keinen Konstruktor, der nur 2 Parameter nimmt. –

+2

* "Die Zeile, die falsch (?) Ist, ist im folgenden Code fett geschrieben." * Nein, ist es nicht. * "Der Teil im Code unten ist fett geschrieben, wie ich bereits erwähnt habe" * Nein, es ist nicht, wie ich bereits erwähnt habe. :-) –

+2

Ersetzen Sie 'super (n, m);' mit 'super (Name, Mahlzeiten, doesitbite);' –

Antwort

0

im Konstruktor für BigAnimal Ändern

super(n,m); 

zu

super(name, meals) 

Das heißt, die dem BigAnimal-Konstruktor übergebenen Werte an den Superklassenkonstruktor übergeben

Al Also, beheben Sie Ihren Fehler (?) und geben Sie der Superklasse entweder einen Konstruktor mit nur zwei Parametern oder übergeben Sie einen dritten Parameter an den Konstruktor, den Sie haben. ZB

super(name, meals, doesitbite) 
+1

Gute Antwort, aber ich werde nicht abstimmen, weil das verhindern würde, dass OP die Frage löscht. Die Frage ist für andere nicht nützlich, daher sollte sie gelöscht werden. – Andreas