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?
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?
void ausgeben() {
System.out.println("Das Insekt ist" + laenge + " mm lang und wiegt "+ gewicht +" Gramm.");
}
class Biene extends Insekt{
int geschwindigkeit;
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.
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.
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.
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
Wenn du ordentlich einrückst (oder von deinem Editor (IDE) einrücken lässt), solltest du einen solchen Fehler bemerken.
Einrückungen sind für einen Mechen viel einfacher zu überschauen als geschweifte Klammern.
publicclassInsekt{publicint laenge;publicint gewicht;// der KonstruktorInsekt(int laenge,int gewicht){this.laenge = laenge;this.gewicht = gewicht;}// die Methode zum Essenvoidessen(){
laenge = laenge +1;
gewicht = gewicht +1;}// die Methode zur Ausgabevoidausgabe(int laenge,int gewicht){System.out.println("Das Insekt ist "+ laenge +" cm lang und wiegt "+ gewicht +" Gramm.");}}classBieneextendsInsekt{int geschwindigkeit;Biene(int laenge,int gewicht,int geschwindigkeit){super(laenge, gewicht);// Attribute der Mutterklasse Insektthis.geschwindigkeit = geschwindigkeit;// neues Attribut von Biene, damit wird der Konstruktor überschrieben}voidessen(){
laenge = laenge +1;
gewicht = gewicht +1;
geschwindigkeit = geschwindigkeit +1;}voidausgabe(){System.out.println("Das Insekt ist "+ laenge +" cm lang und wiegt "+ gewicht +" Gramm und fliegt mit "+ geschwindigkeit +" km/h.");}}publicstaticvoidmain(String[] args){// hier wird ein Insekt erzeugtInsekt insekt1 =newInsekt(2,3);// hier wird eine Biene erzeugtBiene biene1 =newBiene(4,5,2);// hier isst das Insekt und die Biene
insekt1.essen();
biene1.essen();// Ausgabe
biene1.ausgabe();
insekt1.ausgabe();