Vererbung Super Konstruktor

llabusch

Mitglied
Hallo liebe Java-Gemeinde!

Ich soll eine Aufgabe lösen und dazu soll ich den "Super-Konstruktor" ebenfalls verwenden...:autsch:
Ich habe eine Superclass "Insekt" und eine Subclass "Fliege". Die Variablen sind bei "Insekt" (int laenge,int gewicht), bei "Fliege" soll noch (int geschwindigkeit) dazu kommen.

So ich soll in main() jeweils für beide Klassen ein Objekt erstellen und dann ausgeben lassen. Ich mache das dann so:

Java:
Insekt einInsekt = new Insekt(1,1);
		Fliege eineFliege = new Fliege(1, 1, 1);

Nur das ist ja nicht Sinn, denn eigentlich soll ich bei "eineFliege" ja nur noch die Geschwindigkeit übergeben, laenge und gewicht soll der sich ja von der Superclass holen. Also mir der "Super-Referenz", aber egal wie ich auch rumprobiere es klapp nicht.

Also hier ist mein Grundgerüst, kann mir jemand es erklären, wie ich es richtig mache?

Vielen lieben Dank schon mal!!!


Java:
/*###################################################################
  Aufgabe 5
  ###################################################################
 */


class Insekt {
	
	int laenge, gewicht;
	
	Insekt (int laenge, int gewicht) {
		
		this.laenge = laenge;
		this.gewicht = gewicht;
	}
	
	
	
	void essen(){
		laenge = laenge +1;
		gewicht = gewicht+1;
	}
	
	void ausgabe(){
		
		System.out.println("Das Insekt ist " + laenge + "cm lang und wiegt " + gewicht + "g.");
	}
}

class Fliege extends Insekt {                                                                                  
	
	int geschwindigkeit;
	
	Fliege (int geschwindigkeit, int laenge, int gewicht){
		
		super(laenge, gewicht);
		
		this.laenge = laenge;
		this.gewicht = gewicht;
		this.geschwindigkeit = geschwindigkeit;
		
	}
	
	void essen(){
		
		laenge = laenge + 2;
		gewicht= gewicht + 2;
	}
	
	void ausgabe(){
		
		System.out.println("Die Fliege ist " + laenge + "cm lang, wiegt " + gewicht + "g und ist " + geschwindigkeit + "Km/h schnell.");
	}

	
}

public class Aufgabe5 {

	
	public static void main(String[] args) {
		
		Insekt einInsekt = new Insekt(1,1);
		Fliege eineFliege = new Fliege(1, 1, 1);
		einInsekt.essen();
		eineFliege.essen();
		einInsekt.ausgabe();
		eineFliege.ausgabe();
	}

}
 

Barista

Top Contributor
Nur das ist ja nicht Sinn, denn eigentlich soll ich bei "eineFliege" ja nur noch die Geschwindigkeit übergeben, laenge und gewicht soll der sich ja von der Superclass holen. Also mir der "Super-Referenz", aber egal wie ich auch rumprobiere es klapp nicht.

Dein Fliege-Objekt ist doch durch die Vererbung auch ein Insekt-Objekt
und hat damit die Geschwindigkeit-Eigenschaft.

Es gibt keine super-Referenz.
super ist nur ein Prefix für die Auswahl einer Methode oder Member aus der Oberklasse bei einem eventuellen Namens-Konflikt, der sowieso nur bei einem falschen Entwurf auftaucht.
 

FetterOtter

Bekanntes Mitglied
Schmeiß mal aus dem Fliege-Konstruktor die Zuweisungen von Länge und Gewicht weg. Das hast du ja schon durch den Konstruktor-Aufruf (die Zeile darüber) erledigt.
Außerdem änderst du in "Fliege" die Methode "ausgabe()" ab:
Java:
  void ausgabe()
  {    
    super.ausgabe();
    System.out.println("Die Fliege ist " + geschwindigkeit + "Km/h schnell.");
  }
In der Main-Methode erzeugst du nur noch eine "Fliege", kein weiteres "Insekt". Die Klasse "Fliege" leitest du ja schon von "Insekt" ab.
Ich denke, das ist es, was du haben möchtest...
 

Andy17

Aktives Mitglied
Es gibt keine super-Referenz.
super ist nur ein Prefix für die Auswahl einer Methode oder Member aus der Oberklasse bei einem eventuellen Namens-Konflikt, der sowieso nur bei einem falschen Entwurf auftaucht.

So stimmt das nun auch nicht. Im Zusammenhang mit Konstruktoren erhält super einen tieferen Sinn. Tipp: Einfach mal nach Konstruktoren googeln und "super" suchen.

Hier ein beispielhafter Link: Galileo Computing :: Java ist auch eine Insel - 5 Eigene Klassen schreiben

So wird zum Beispiel durch super unterschieden welcher Konstruktor der Oberklasse benutz werden soll.

Und sowieso nur bei einem falschen Entwurf auftauchen?? Entschuldigung aber das ist Müll. Alleine schon durch Vererbung kann es unter Umständen dazu kommen, dass du Namenskonflokte hast die nicht einfach durch überladen zu lösen sind. Man muss manchmal überschreiben und wie erreicht man dann die überschriebene Methode? Mit "super"..

Zurück zu deinem Problem llabusch:

Schmeiß aus deinem Konstruktor die Zuweisung this.laenge und this.gewicht weg, FetterOtter hat Recht, das hast du direkt darüber schon erledigt. Die Ausgabe brauchst du nicht zwingend ändern, zumal dann der Output etwas seltsam anmuten würde. Ich würde den Output an deiner Stelle so lassen.

LG
 

Barista

Top Contributor
So wird zum Beispiel durch super unterschieden welcher Konstruktor der Oberklasse benutz werden soll.

Hoppla, da weiss aber jemand Bescheid.

Ich meinte eine super-Referenz, Du sprichst von der Methode super, das ist was anderes.

Java:
this.member;

super.member;

Und sowieso nur bei einem falschen Entwurf auftauchen?? Entschuldigung aber das ist Müll.

Member mit gleichem Namen in der Oberklasse und der abgeleiteten Klasse sind ein falscher Entwurf.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
S super() im Konstruktor Java Basics - Anfänger-Themen 12
J Konstruktor der Oberklasse und super Java Basics - Anfänger-Themen 1
U super-Konstruktor Aufrufen mit Object, dass Exception wirft Java Basics - Anfänger-Themen 2
mrStudent <? extends T> und <? super T> Java Basics - Anfänger-Themen 1
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
M Super(); Java Basics - Anfänger-Themen 1
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
N extends und super vs new object Java Basics - Anfänger-Themen 4
CptK Vererbung Attributtyp in Super-Klasse noch nicht festlegen Java Basics - Anfänger-Themen 1
Queiser Super boolean Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B super vs. this Java Basics - Anfänger-Themen 24
M Was macht super (...)? Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
Henri Aufruf von getX() und getY() aus der Super klasse Objekt() Java Basics - Anfänger-Themen 3
N Frage zu this, super und return Java Basics - Anfänger-Themen 13
E this() / super() Java Basics - Anfänger-Themen 7
T super Java Basics - Anfänger-Themen 3
G funktionen der super-klasse von der super-klasse Java Basics - Anfänger-Themen 6
O Vererbung this innerhalb von super Java Basics - Anfänger-Themen 7
X Frage zu Sub/Super Klassen Java Basics - Anfänger-Themen 7
V Vererbung (wie) kann man eine 'super'-Methode auf ein Objekt anwenden ? Java Basics - Anfänger-Themen 6
E Erste Schritte <? super Unterklasse> Return-Typ darf nicht vom Wildcard-Typ sein Java Basics - Anfänger-Themen 5
E Erste Schritte Lower Bounded Wildcards <? super Integer> Java Basics - Anfänger-Themen 1
K Vererbung (super) Java Basics - Anfänger-Themen 2
C Super und Unterklassen Java Basics - Anfänger-Themen 6
Avarion Getter von Super-Klasse funktioniert nicht Java Basics - Anfänger-Themen 10
I Verständnisfrage zu BridgePattern, Verwedung von super() Java Basics - Anfänger-Themen 4
Z Super einfache Frage For-Schleife im Detail Java Basics - Anfänger-Themen 3
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
A Super Klasse Java Basics - Anfänger-Themen 3
O OOP super aufruf 2 objekte? Java Basics - Anfänger-Themen 3
L Erste Schritte Super Constructor mit Array - Liste? Java Basics - Anfänger-Themen 15
A Shallow copy .super.clone() Java Basics - Anfänger-Themen 2
P Vererbung super() ohne Parameter Java Basics - Anfänger-Themen 2
D Super und Sub-Klassen Java Basics - Anfänger-Themen 2
D super.tostring Java Basics - Anfänger-Themen 8
A Super-Anweisung in abstrakter Klasse Java Basics - Anfänger-Themen 12
K Überschreiben einer "super.super"-Methode Java Basics - Anfänger-Themen 6
Luk10 super() und this Java Basics - Anfänger-Themen 7
S super() aufruf ausgabe Java Basics - Anfänger-Themen 3
L Frage zu Generics: "super" Java Basics - Anfänger-Themen 16
S super.paint() Java Basics - Anfänger-Themen 4
G Vererbung, Konstruktoranweisungen VOR super() Java Basics - Anfänger-Themen 4
G Variablen initialisieren vor super() Java Basics - Anfänger-Themen 8
H Konstruktoren – super! Java Basics - Anfänger-Themen 3
A Am Buch lesen, nun brauch ich eure Hilfe um mir super() zu erklären Java Basics - Anfänger-Themen 4
J Problem mit super Java Basics - Anfänger-Themen 10
G super operator und incompatible types, simple fehler Java Basics - Anfänger-Themen 8
kulturfenster super.paintComponent(g); Java Basics - Anfänger-Themen 3
J abstrakte klasse und methode super Java Basics - Anfänger-Themen 2
B super methode aufrufen und ergänzen? Java Basics - Anfänger-Themen 5
G Innerhalb von Runnable auf super. zugreifen? Java Basics - Anfänger-Themen 3
X this dynamisch, super statisch? Java Basics - Anfänger-Themen 3
A Frage zu super, abstracte Klassen und Kapselung Java Basics - Anfänger-Themen 3
G frage zu vererbung (super) Java Basics - Anfänger-Themen 10
G super(null) Java Basics - Anfänger-Themen 7
F Der "super" Ausdruck Java Basics - Anfänger-Themen 4
S was macht super() ? Java Basics - Anfänger-Themen 7
W super.methode Java Basics - Anfänger-Themen 2
G neues String Array in super() übergeben Java Basics - Anfänger-Themen 3
I call to super must be first statement in constructor Java Basics - Anfänger-Themen 3
K java syntax: wofür steht super(screen)? Java Basics - Anfänger-Themen 5
S Verwendung von Super Java Basics - Anfänger-Themen 7
P super an methode übergeben Java Basics - Anfänger-Themen 8
S supertyp steht ohne super in hierachy - eclipse Java Basics - Anfänger-Themen 4
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
C Unbekannter "Konstruktor"?? Java Basics - Anfänger-Themen 10
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
K Konstruktor für ein Objekt mit Zugriffsmethoden Java Basics - Anfänger-Themen 7
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben