Variablen Verwaltung von Attributen

denisdw

Mitglied
Hallo zusammen,

ich habe folgende Klasse definiert:

Java:
class Papagei {

   private String name;
  
   public Papagei() {     
   }

   void setName(String name){
      this.name = name;
   }

   String getName(){
      return this.name;
   }
}

Nun versuche ich in anderer Klasse 3 Objekte der Klasse Papagei zu erzeugen und für jedes diesen Objekten einen Namen zu setzen:

Java:
class Zoo {
    // Lege hier die Attribute (Papageien) an
    private String name;

    public Zoo() {
        // Setze hier die Namen der zuvor angelegten Papageien
        Papagei alex = new Papagei();
        alex.setName("Alex");
      
        Papagei jaspar = new Papagei();
        jaspar.setName("Jaspar");
      
        Papagei kiki = new Papagei();
        kiki.setName("Kiki");
   }

   public static void main(String[] args) {
        Zoo zoo = new Zoo();
        System.out.println("Dies ist ein Zoo. Es gibt hier drei Papageien:");
        System.out.println(zoo.alex.getName());
        System.out.println(zoo.jaspar.getName());
        System.out.println(zoo.kiki.getName());

    }
}

Und bekomme die Meldung



Ich vermute, dass der Fehler daran liegt, dass ich in der Klasse Zoo die Attribute nicht bzw. falsch definiert habe...aber sicher bin ich mir nicht.

VG
Denis
 
Du erstellst die Objekte im Konstruktur, deswegen sind sie auch nur da vorhanden.
Ganz oben steht ja sogar als Kommentar:
// Lege hier die Attribute (Papageien) an

Also solltest du die Papageien als Attribute anlegen und im Konstruktor nur die Namen setzen:
Java:
class Zoo {
    // Lege hier die Attribute (Papageien) an
    Papagei alex = new Papagei();
    Papagei jaspar = new Papagei();
    Papagei kiki = new Papagei();
   
    public Zoo() {
        // Setze hier die Namen der zuvor angelegten Papageien
        alex.setName("Alex");
        jaspar.setName("Jaspar");
        kiki.setName("Kiki");
   }

   public static void main(String[] args) {
        Zoo zoo = new Zoo();
        System.out.println("Dies ist ein Zoo. Es gibt hier drei Papageien:");
        System.out.println(zoo.alex.getName());
        System.out.println(zoo.jaspar.getName());
        System.out.println(zoo.kiki.getName());

    }
}
 
Der Grund für die Fehlermeldung ist der Scope der Variablen.
Du hast drei Variablen vom Typ Papagei im Konstruktor erstellt, diese sind nur innerhalb des Konstruktor verfügbar. Damit diese Variablen im Objekt vom Typ Zoo verfügbar hast musst du es wie Tarrew zeigt machen, Instanzvariablen deklarieren und diese initialisieren.
 

Zurück
Oben