Polymorphie toString

Moff

Mitglied
Hallo,

Ich habe folgende Aufgabe die ich nicht ganz verstehe:

Sie haben von einer selbst erstellten Klasse einer weitere Klasse abgeleitet. In der abgeleiteten Klasse haben sie die Methode toString() überschrieben, in der Basisklasse dagegen nicht.
Können Sie die Methode toString() der Basisklasse in der abgeleiteten Klasse mit der Referenz "super" aufrufen? Wenn ja, was liefert Ihnen die Methode.

Meine bisherigen Erkenntnisse:
Einmal wird gesagt, die Methode toString wird in der Basisklasse nicht überschrieben und zum anderen soll ich diese wieder aus der Basisklasse aufrufen.
Wenn nun die Methode toString() in der basisklasse überschrieben wird, dann kann ich Sie natürlich mit der Referenz "super" aufrufen. Sie liefert mir alle in der Basisklasse erstellten Variablen.

Jetzt frag ich mich aber, ist sie nun überschrieben oder nicht?
 
K

kneitzel

Gast
Also die Basisklasse überschreibt toString() nicht. Von was ist denn die Basisklasse abgeleitet? Was wird ausgeführt, wenn toString() auf der Basisklasse aufgerufen wird? Kommst Du über diese Fragestellungen auf die Lösung?
 

Moff

Mitglied
Die Basisklasse ist die oberste Klasse und wird von nichts abgeleitet.? Es werden die in der Basisklasse implizierten Anweisungen ausgegeben.?
 
K

kneitzel

Gast
Das ist so nicht richtig. Richtig ist:
Eine Klasse, bei der keine explizite Basisklasse angegeben wurde, erbt von Object.

Somit erbt die folgende Klasse
Java:
public class SomeClass {}
von Object.

Also müsste man nun schauen, was in Object so alles drin ist:
Das ist ja, was jede Klasse erst einmal erbt.
 

Moff

Mitglied
Das vereben hab ich denke ich verstanden. Aber irgendwie kommt die Art wie die Aufgabenstellung formuliert wurde, nicht bei mir an.

>>>>Danke übrigens für die Rückmeldungen<<<<
 

Moff

Mitglied
[CODE lang="java" title="Biene kann nicht in einen Typ aufgelöst werden" highlight="44"]

package JAVA;

class Insekt{
int laenge;
int gewicht;

Insekt (int laenge, int gewicht){
this.laenge=laenge;
this.gewicht=gewicht;
}

void essen() {
laenge = laenge + 1;
gewicht = gewicht + 1;
}

void ausgeben() {
System.out.println("Das Insekt ist" + laenge + " mm lang und wiegt "+ gewicht +" Gramm.");
}
class Biene extends Insekt{
int geschwindigkeit;

Biene (int laenge, int gewicht, int geschwindigkeit){
super(laenge,gewicht);
this.geschwindigkeit = geschwindigkeit;
}
@Override
void essen() {
laenge = laenge + 1;
gewicht = gewicht + 1;
geschwindigkeit = geschwindigkeit + 1;
}
@Override
void ausgeben() {
System.out.println("Das Insekt ist " + laenge + " cm lang, wiegt "+ gewicht +" Gramm und fliegt "+ geschwindigkeit + " km/h.");
}
}
}

public class jAVA {
public static void main(String[] args) {

Insekt Mutterbiene = new Insekt(15,1);
Biene Maia = new Biene (10,1,20);

Mutterbiene.ausgeben();
Mutterbiene.essen();
Maia.ausgeben();
Maia.essen();
}
}


[/CODE]
 

Moff

Mitglied
Bei mir wird die Fehlermeldung : "Biene kann nicht in einen Typ aufgelöst werden" angezeigt. Und ich weiß beim besten Willen nicht warum.
Ich hab doch die Vererbung durchgeführt.
 
K

kneitzel

Gast
Also gehen wir einfach einmal alles im Detail durch:
Sie haben von einer selbst erstellten Klasse einer weitere Klasse abgeleitet.
Du hast also zwei Klassen:
Eins -> Abgeleitet von Object (Weil nichts explizit angegeben)
Zwei -> Eins
In der abgeleiteten Klasse haben sie die Methode toString() überschrieben, in der Basisklasse dagegen nicht.
Also in Eins ist toString nicht überschrieben worden. Damit wird die toString Methode in Object für Instanzen von Eins aufgerufen.
In Zwei überschreibst Du toString, damit wird auf den Instanzen von Zwei die dort geschriebene toString Methode verwendet.
Können Sie die Methode toString() der Basisklasse in der abgeleiteten Klasse mit der Referenz "super" aufrufen? Wenn ja, was liefert Ihnen die Methode.
Das geht natürlich. Aber da wird dann toString von Object aufgerufen und liefert demnach auch die entsprechende Ausgabe.
Einmal wird gesagt, die Methode toString wird in der Basisklasse nicht überschrieben und zum anderen soll ich diese wieder aus der Basisklasse aufrufen.
Es wird mit super halt die übergeordnete Version aufgerufen. Das kann über mehrere Klassen hinweg gehen.
Wenn nun die Methode toString() in der basisklasse überschrieben wird, dann kann ich Sie natürlich mit der Referenz "super" aufrufen. Sie liefert mir alle in der Basisklasse erstellten Variablen.
Die toString Methode von Object liefert einem keinen Inhalt von Variablen. Hast die Ausgabe bestimmt schon einmal gesehen, oder?

Bei mir wird die Fehlermeldung : "Biene kann nicht in einen Typ aufgelöst werden" angezeigt. Und ich weiß beim besten Willen nicht warum.
Ich hab doch die Vererbung durchgeführt.
Wenn ich mir das anschaue, dann hast Du die Klasse Bienen in der Klasse Insekt geschrieben. Jede Klasse kommt in seine eigene Datei. So innere Klassen gibt es zwar auch, aber da gelten spezielle Regeln. Also Klasse Biene -> Biene.java. Klasse Insekt -> Insekt.java. Und dann erst einmal alles im gleichen Verzeichnis / Package lassen.
 

Moff

Mitglied
Das Problem mit der Biene war, dass ich eine geschweifte Klammer zu wenig hatte und somit die Klasse Biene in die Klasse Insekten integriert habe. Diese Konstrukt habe ich aus meinem Lernheft übernommen, nur eben nicht genau auf die geschweiften Klammern geachtet.

DANKE dafür erstmal....nun zum anderen Problem zurück
 

Moff

Mitglied
Ich werde darauf achten. Hab mich schon gefragt, warum die geschweiften klammern nicht immer ganz vorne am rand stehen. jetzt macht es sinn
 

Jonas_E

Mitglied
Hier mal meine Lösung:

Java:
public class Insekt {
    public int laenge;
    public int gewicht;

    // der Konstruktor
    Insekt(int laenge, int gewicht) {
        this.laenge = laenge;
        this.gewicht = gewicht;
    }

    // die Methode zum Essen
    void essen() {
        laenge = laenge + 1;
        gewicht = gewicht + 1;
    }

    // die Methode zur Ausgabe
    void ausgabe(int laenge, int gewicht) {
        System.out.println("Das Insekt ist " + laenge + " cm lang und wiegt " + gewicht + " Gramm.");
    }
}

class Biene extends Insekt {

    int geschwindigkeit;

    Biene(int laenge, int gewicht, int geschwindigkeit) {
        super(laenge, gewicht); // Attribute der Mutterklasse Insekt
        this.geschwindigkeit = geschwindigkeit; // neues Attribut von Biene, damit wird der Konstruktor überschrieben
    }

    void essen() {
        laenge = laenge + 1;
        gewicht = gewicht + 1;
        geschwindigkeit = geschwindigkeit + 1;
    }

    void ausgabe() {
        System.out.println("Das Insekt ist " + laenge + " cm lang und wiegt " + gewicht + " Gramm und fliegt mit "
                + geschwindigkeit + " km/h.");
    }

}

public static void main(String[] args) {
    
    // hier wird ein Insekt erzeugt
    Insekt insekt1 = new Insekt(2, 3);

    // hier wird eine Biene erzeugt
    Biene biene1 = new Biene(4, 5, 2);
    

    // hier isst das Insekt und die Biene
    insekt1.essen();
    biene1.essen();

    // Ausgabe
    biene1.ausgabe();
    insekt1.ausgabe();
 

Anhänge

  • aufgabe5.java
    1,5 KB · Aufrufe: 2
Ähnliche Java Themen
  Titel Forum Antworten Datum
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
W ArrayList und toString Java Basics - Anfänger-Themen 17
W toString bei composition Java Basics - Anfänger-Themen 4
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
E Einrücken inner der toString()-Methode Java Basics - Anfänger-Themen 34
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
P falscher booleanwert bei toString Java Basics - Anfänger-Themen 4
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
J Methoden toString()-Date Formatter Java Basics - Anfänger-Themen 8
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
M Die Inhalte eines Arrays mit der Methode Arrays.toString ausgeben Java Basics - Anfänger-Themen 4
H toString-Methode Java Basics - Anfänger-Themen 24
E Vererbung mit toString() Java Basics - Anfänger-Themen 6
O Referenz - toString Java Basics - Anfänger-Themen 9
B toString mit optionaler Ausgabe überrschreiben Java Basics - Anfänger-Themen 5
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
C Methoden toString Java Basics - Anfänger-Themen 4
B toString() Dilemma Java Basics - Anfänger-Themen 7
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 13
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 1
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
D Arrays.toString spuckt null aus? Java Basics - Anfänger-Themen 3
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
K array in toString des objektes ausgeben Java Basics - Anfänger-Themen 1
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
J toString() Methode und ArrayList Java Basics - Anfänger-Themen 1
K toString() Java Basics - Anfänger-Themen 1
H Erste Schritte Arrayes.toString methode funktioniert nicht Java Basics - Anfänger-Themen 2
A Problem mit toString Methode Java Basics - Anfänger-Themen 8
T String toString methode nicht vererbt ... Java Basics - Anfänger-Themen 4
I Vererbung toString() Frage Java Basics - Anfänger-Themen 5
M Unbekannte Nummer bei Aufruf der toString Methode Java Basics - Anfänger-Themen 3
E Richtige Ausgabe nur mit toString() - Warum? Java Basics - Anfänger-Themen 4
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
A ToString()-Methode richtig benutzen Java Basics - Anfänger-Themen 3
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
A JList / toString modify Java Basics - Anfänger-Themen 2
J Vererbung Überschriebene toString-Methode aufrufen Java Basics - Anfänger-Themen 10
M toString gibt "null" statt "0.0" aus Java Basics - Anfänger-Themen 5
M toString Java Basics - Anfänger-Themen 7
H Integer.toString(int i) vs. String.valueOf(int i) Java Basics - Anfänger-Themen 12
C Methoden String von einem toString() herauslesen Java Basics - Anfänger-Themen 2
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
P toString-Methode gibt immer null vor Variable aus Java Basics - Anfänger-Themen 9
N .toString() und (string) Java Basics - Anfänger-Themen 2
B Methoden toString Methode mit Schlüsselwort new Java Basics - Anfänger-Themen 3
S schwierigkeit mit in der verwaltungsklasse benutzen von toString() Java Basics - Anfänger-Themen 7
J Zweidimensionales Array durch ToString ausgeben lassen Java Basics - Anfänger-Themen 21
N Matrix an toString Java Basics - Anfänger-Themen 7
A Werteausgabe des Construktors mit toString Java Basics - Anfänger-Themen 2
D super.tostring Java Basics - Anfänger-Themen 8
A Stringarray toString Java Basics - Anfänger-Themen 5
L toString()-Methode in verschieden Klassen Java Basics - Anfänger-Themen 3
R Frage zu statischer Methode toString() Java Basics - Anfänger-Themen 3
S Escape Sequenz in der toString() ? Java Basics - Anfänger-Themen 4
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
A Arrays.asList(s).toString() ohne [] und , Java Basics - Anfänger-Themen 3
P toString Java Basics - Anfänger-Themen 4
M .toString(); // Ausgabe: Attribut von Vaterklasse Java Basics - Anfänger-Themen 12
K toString Java Basics - Anfänger-Themen 10
F toString Methode ausgeben Java Basics - Anfänger-Themen 3
A Object -> String mit valueOf, toString oder cast ? Java Basics - Anfänger-Themen 6
R getClass und getName sowie toString Java Basics - Anfänger-Themen 10
D Arrays.toString problem Java Basics - Anfänger-Themen 2
D array.toString() wieso funktioniert es nicht Java Basics - Anfänger-Themen 4
S toString-Methode für Map Java Basics - Anfänger-Themen 15
L OOP hilfe bei tostring methode Java Basics - Anfänger-Themen 6
D toString überschreiben + Exception werfen Java Basics - Anfänger-Themen 3
H toString / println Java Basics - Anfänger-Themen 2
H toString() erben? Java Basics - Anfänger-Themen 3
A Arrays.toString() ohne [ und ] Java Basics - Anfänger-Themen 2
K Arrays.toString(); funktioniert nicht Java Basics - Anfänger-Themen 4
A byte.toString() -> Datenmüll Java Basics - Anfänger-Themen 52
K Problem mit .toString und FileReader Java Basics - Anfänger-Themen 2
G toString Problem Java Basics - Anfänger-Themen 12
G Gregorian Calendar aus toString() Ausgabe wiederherstellen Java Basics - Anfänger-Themen 4
T Warum Fehlermeldung bei diesem ToString Programm? Java Basics - Anfänger-Themen 2
B toString Java Basics - Anfänger-Themen 5
S Was macht [Integer.toString(number, tarRadix)] Java Basics - Anfänger-Themen 3
G Probleme bei toString Überschreibung Java Basics - Anfänger-Themen 6
M int toString Datentypen Umwandeln, AnfängerProblem Java Basics - Anfänger-Themen 3
T keine Ausgabe von toString obwohl keine Fehlermeldung Java Basics - Anfänger-Themen 5
D ToString Java Basics - Anfänger-Themen 3
C Bedeutung von toString im Bezug auf Text Java Basics - Anfänger-Themen 4
N char[] aus JPasswordField toString() Java Basics - Anfänger-Themen 6
T Boolean toString ? Java Basics - Anfänger-Themen 3
D Frage zum Aufruf einer toString-Methode Java Basics - Anfänger-Themen 2
H toString(); varargs; bitSet Java Basics - Anfänger-Themen 8
M getClass() und getClass().toString() Java Basics - Anfänger-Themen 4
V toString()-Methode Java Basics - Anfänger-Themen 9
S PrintWriter-Probleme mit toString Methode->Person@17182c1 Java Basics - Anfänger-Themen 10
P Vektor toString? Java Basics - Anfänger-Themen 2
S valueOf() vs. toString() Verwendung??? Java Basics - Anfänger-Themen 13
G Frage zur toString ? Java Basics - Anfänger-Themen 4
L .toString wieder rückgängig machen Java Basics - Anfänger-Themen 7
H Was ist toString ??? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben