Java: Getter-Methode gibt im Objektkonstruktor festgelegten Wert nicht zurück
Posted: 21 Dec 2024, 10:27
Ich nehme am Amazon Junior Dev-Kurs auf Coursera teil und arbeite mich durch das Abschlussprojekt des ersten Kurses, das sich auf Vererbung und Polymorphismus konzentriert.
Die umfassendere Aufgabe ist das Erstellen ein Zoo. Die Struktur des Problems, an dem ich derzeit arbeite, besteht darin, dass es oben eine abstrakte Klasse, Animal, und zwei untergeordnete Klassen, Tiger und Dolphin, gibt.
Die Aufgabe besteht für mich darin, die Unterklassen zu erstellen, während ich den Standardkonstruktor der übergeordneten Klasse aufrufe, sodass ich beim Instanziieren der Tiger- und Dolphin-Objekte eine bestimmte Zeichenfolge durch den Konstruktor in der Hauptmethode übergeben und über die Getter-Methode verfügen kann Von der abstrakten übergeordneten Klasse geerbte Zeichenfolgen geben diese Zeichenfolge zurück als nameOfAnimal oder die String-Eigenschaft, die in der übergeordneten Klasse instanziiert und über den Konstruktor an die untergeordneten Klassen geerbt wird.
In der übergeordneten Klasse Animal:
String nameOfAnimal;
// no argument constructor
public Animal() {
nameOfAnimal = "Unknown Animal";
}
// parametrized constructor
public Animal(String nameOfAnimal) {
this.nameOfAnimal = nameOfAnimal;
}
public String getNameOfAnimal() {
return nameOfAnimal;
}
public void setNameOfAnimal(String nameOfAnimal) {
this.nameOfAnimal = nameOfAnimal;
}
In den Unterklassen Aufruf des Konstruktors der Superklasse:
public Tiger(String nameOfAnimal){
super();
Angesichts des obigen Codes in den übergeordneten und untergeordneten Klassen habe ich Folgendes in der Hauptmethode versucht:
Tiger tigerObject = new Tiger("Tiger");
Die Aufgabe besteht darin, eine Getter-Methode zu verwenden, um den Namen des Tieres zurückzugeben, sodass System.out.println("Das ausgewählte Tier ist: " + tigerObject.getNameOfAnimal() ); würde zurückkommen
The animal which is chosen is: Tiger
Leider wird unabhängig von den Konfigurationen, die ich versuche, zurückgegeben. Das ausgewählte Tier ist: Unbekanntes Tier, von dem ich erkenne, dass es das ist, was zurückgegeben werden würde, wenn Ich hätte den Konstruktor ohne Argument und nicht den parametrisierten Konstruktor aufrufen sollen.
Da ich das Objekt instanziiert habe und insbesondere „Tiger“ als nameOfAnimal übergeben habe, kann ich beim besten Willen nicht herausfinden, was Ich mache falsch.
Vielen Dank!
Die umfassendere Aufgabe ist das Erstellen ein Zoo. Die Struktur des Problems, an dem ich derzeit arbeite, besteht darin, dass es oben eine abstrakte Klasse, Animal, und zwei untergeordnete Klassen, Tiger und Dolphin, gibt.
Die Aufgabe besteht für mich darin, die Unterklassen zu erstellen, während ich den Standardkonstruktor der übergeordneten Klasse aufrufe, sodass ich beim Instanziieren der Tiger- und Dolphin-Objekte eine bestimmte Zeichenfolge durch den Konstruktor in der Hauptmethode übergeben und über die Getter-Methode verfügen kann Von der abstrakten übergeordneten Klasse geerbte Zeichenfolgen geben diese Zeichenfolge zurück als nameOfAnimal oder die String-Eigenschaft, die in der übergeordneten Klasse instanziiert und über den Konstruktor an die untergeordneten Klassen geerbt wird.
In der übergeordneten Klasse Animal:
String nameOfAnimal;
// no argument constructor
public Animal() {
nameOfAnimal = "Unknown Animal";
}
// parametrized constructor
public Animal(String nameOfAnimal) {
this.nameOfAnimal = nameOfAnimal;
}
public String getNameOfAnimal() {
return nameOfAnimal;
}
public void setNameOfAnimal(String nameOfAnimal) {
this.nameOfAnimal = nameOfAnimal;
}
In den Unterklassen Aufruf des Konstruktors der Superklasse:
public Tiger(String nameOfAnimal){
super();
Angesichts des obigen Codes in den übergeordneten und untergeordneten Klassen habe ich Folgendes in der Hauptmethode versucht:
Tiger tigerObject = new Tiger("Tiger");
Die Aufgabe besteht darin, eine Getter-Methode zu verwenden, um den Namen des Tieres zurückzugeben, sodass System.out.println("Das ausgewählte Tier ist: " + tigerObject.getNameOfAnimal() ); würde zurückkommen
The animal which is chosen is: Tiger
Leider wird unabhängig von den Konfigurationen, die ich versuche, zurückgegeben. Das ausgewählte Tier ist: Unbekanntes Tier, von dem ich erkenne, dass es das ist, was zurückgegeben werden würde, wenn Ich hätte den Konstruktor ohne Argument und nicht den parametrisierten Konstruktor aufrufen sollen.
Da ich das Objekt instanziiert habe und insbesondere „Tiger“ als nameOfAnimal übergeben habe, kann ich beim besten Willen nicht herausfinden, was Ich mache falsch.
Vielen Dank!