Hallo,
Ich bin noch ein ziemlicher Anfänger was das Programmieren angeht und komme bei meiner aktuellen Hausaufgabe jetzt einfach nicht weiter.
Bisher habe ich folgenden Code geschrieben, der vier objekte (2x Kind, 2xRobbe) erstellt und diese anschließend zu einem Array zusammenfasst. Jetzt soll für alle diese Objekte die methode füttern durchgeführt werden, die im Interface Hungrig gespeichert ist, das sowohl von Kind wie auch Robbe implementiert wird. Leider habe ich absolut keine Ahnung wie ich jetzt für jedes Objekt im Array die methode aufrufen kann.
Danke für die antwort, allerdings erhalte ich dann die Fehlermeldung non-static method cannot be referenced from a static context beim compilieren. Gibt es eine Möglichkeit das zu umgehen?
package de.tmscience.sciencelab.testchamber3;
public class TagImZoo {
public static void main(String[] args) {
int eiskugeln = 0;
int fisch = 0;
Kind Kind1 = new Kind("Anna", 7);
Kind Kind2 = new Kind("Luka", 5);
Robbe Robbe1 = new Robbe("Kalle", 100);
Robbe Robbe2 = new Robbe("Mari", 97);
Lebewesen[] tag = new Lebewesen[4];
tag[0] = Kind1;
tag[1] = Kind2;
tag[2] = Robbe1;
tag[3] = Robbe2;
for (Lebewesen element : tag) {
element.fuettern();
}
}
}
|Konsole| Anna hat gerade 2 Kugeln Eis gegessen.
Luka hat gerade 1 Kugeln Eis gegessen.
Die Robbe Kalle hat gerade 13.0 Fische gefressen.
Die Robbe Mari hat gerade 12.0 Fische gefressen.
Was genau machst du denn, wie genau sieht dein neuer Code aus?
Ok, ich habe einfach das hinter tag vergessen, war wohl gestern einfach schon etwas spaet fuer mich
Danke, jetzt funktionierts. Wenn ich jetzt am Ende noch ausgeben moechte, wieviele Kugeln und wieviele Fische nach durchlauf des arrays verbraucht wurden, kann ich dass dann auch direkt in die main methode schreiben?
Hatte ueberlegt einfach bei jedem durchlauf nach fuettern das hier anzuhaengen:
eiskugeln+=kugeln;
fisch+=fische;
Allerdings kennt die main methode ja die variablen kugeln und fische gar nicht:/ Falls jemand einen guten Artikel/Buchausschnitt zu objekten in arrays hat, waere ich fuer den Link auch sehr dankbar, wir hatten da kaum etwas zu und das was ich durch google gefunden habe hat mir bisher nicht geholfen.
Du kannst die fuettern-Methode die Anzahl der Kugeln/Fische zurückgeben lassen.
Aber dann müsstest du in der Schleife eine instanceof Abfrage machen, ob es ein Kind oder ne Robbe ist.
Alternativ gibt es in Kind und Robe einen statischen Zähler, welcher von jedem Kind /jeder Robbe hochgezählt wird. Am Ende gibst du dann den aus mit Kind.zähler
Falls jemand einen guten Artikel/Buchausschnitt zu objekten in arrays hat, waere ich fuer den Link auch sehr dankbar, wir hatten da kaum etwas zu und das was ich durch google gefunden habe hat mir bisher nicht geholfen.
Objekte in Arrays sind nicht viel anders, als primitive Datentypen. Ausgeschrieben sähe es so aus:
Java:
for(int i =0; i<tag.length; i++){Lebewesen lebewesen = tag[i];
lebewesen.fuettern();}
Da Programmierer aber notorisch faul sind und gern Zeilen sparen, werden die beiden Zeilen zu tag.fuettern() zusammengefasst.
Ansonsten kannst du damit alles machen, was auch "normalerweise" geht: Löschen, Werte ändern, neu zuweisen, Methoden aufrufen, etc.
Das Array ist nur ein Behälter, es verhält sich immer gleich, vollkommen egal, ob du ints, bytes, booleans, Kinder, Robben oder Katzen drin speicherst.
Objekte wiederum verhalten sich ebenfalls immer gleich, egal, ob sie "blank" im Code liegen, oder in Listen, Arrays, Maps oder was auch immer gespeichert werden.
Dass du dazu nicht viel (verständliches) findest, wundert mich gar nicht: Es gibt keinen Trick/keine Magic.
Das hier ist aber ganz anschaulich: Chapter 11: Arrays of Objects
Spezielle Abschnitt 11.6