Vererbung: Konstruktor mit Parametern

Status
Nicht offen für weitere Antworten.

pommespaula

Mitglied
Hi,

habe folgendes Problem:

Code:
public class Fahrzeug
{
  public static void main(String[] args)
  {
    Kombi OpelOmega = new Kombi();
    OpelOmega.kofferraumGroesse = 4;
    
    System.out.println("KofferraumGroesse: "+OpelOmega.kofferraumGroesse);  
  }
}


class Auto
{
  public String typ;
   
  public Auto(String typ)                     //Konstruktor
  {
    this.typ = typ;
  }
}  


class Kombi
extends Auto
{
  public int kofferraumGroesse;
}

Ich erhalte dann folgende Fehlermeldung:


bash-2.05b$ javac Fahrzeug.java
Fahrzeug.java:24: cannot resolve symbol
symbol : constructor Auto ()
location: class Auto
class Kombi
^
1 error


Ist eigentlich auch klar da die Konstruktor Parameter keinen Wert zu gewiesen bekommen.

Meine Frage lautet also:
Wie Kann ich eine Klasse mit Konstruktor vererben?

Danke für eure Hilfe
 

bummerland

Top Contributor
mach einfach
Code:
class Kombi
extends Auto
{
  public Kombi(String typ){
    super(typ);
  }
  public int kofferraumGroesse;
}
 

foobar

Top Contributor
Das Problem hierbei ist, daß die Oberklasse Auto einen parametrisierten Konstruktor enthält, deshalb wird kein parameterloser Konstruktor vom Compiler eingefügt. Um von Auto zu erben mußt du explizit den parametrisierten Konstruktor der Oberklase Auto, aufrufen.
 

pommespaula

Mitglied
soweit hab ich es begriffen, Danke.

Kann denn dann die Klasse Kombi auch noch eine parametisierten Konstruktor enthalten? oder nmúr inerhalb der Oberklasse? Oder muss müssen sich die Paramter von Ober- und Unterklasse unterscheiden?

also geht folgendes (würde es ausprobieren bin aber nicht zu Hause)??:

Code:
class Kombi 
extends Auto 
{ 
  
   public String kombiTyp  

   public Kombi(String typ){ 
    super(typ); 
  } 
  
  public Kombi(String kombiTyp)
  {
    this.kombiTyp = kombiTyp
  }
 
  public int kofferraumGroesse; 
}

Danke
 

foobar

Top Contributor
also geht folgendes (würde es ausprobieren bin aber nicht zu Hause)??:
Jepp, das ist kein Problem, da du mit super einen Konstruktor der Oberklasse aufrufst.
Du mußt nur immer daruf achten, daß du in der Unterklasse expliziet mit super einen bestimmten Konstruktor der Oberklasse aufrufst.
 

pommespaula

Mitglied
wie wird dieses super (Argument?) denn aufgerufen, zB.:

Code:
 Kombi k1 = new Kombi("OpelOmega");
 Kombi k2 = new super.Kombi("OpelOmega2");

 System.out.println(k1.typ);
 System.out.println(super.k2.typ);

Danke
 

foobar

Top Contributor
super ist eine Referenz auf die Oberklasse. Genauso wie this eine Referenz auf die aktuelle Klasse ist. super kannst du daher nur in Methoden verwenden z.b.

Methode der Oberklasse aufrufen:
Code:
public void machWas()
{
   super.machWas();
}

Konstruktor der Oberklasse aufrufen:
Code:
public myClass()
{
   super();
}
 

pommespaula

Mitglied
Also bezieht sich immer auf Methoden und kann nur in einer klasse verwendet werden und nicht direkt in Verbindung mit einem Objekt.

Zwei Fragen hätte ich dann noch:
1) wie sieht das ganze bei mehrfachvererbung aus:
Code:
super.super.machWas()

2) bringt dies ganze Konstruktor vererbung überhaupt was? ist es nicht sinnvoller und wesentlich übersichtlicher passende Konstruktoren anzulegen. das sollte beim erzeugen eines Objekts für wesentlich weniger verwirrung im quelltext sorgen?
 

foobar

Top Contributor
1) Es gibt keine Mehrfachvererbung in Java. Mit super kannst du immer nur eine Ebene nach oben gehen. Das heißt es gibt keinen Zugriff auf die Oberoberklasse.
2) Man kann Konstruktoren nicht vererben. this und super sind in Konstruktoren unerlässlich, denn damit kannst du genau bestimmen, welcher Konstruktor aufgerufen werden soll.
 

pommespaula

Mitglied
Habe es nun kapiert, hatte jetzt auch mal Zeit einige Dinge auszuprobiren. Etweder muss also der Superkonstruktor explezit oder wird implezit aufgerufen werden.
Expliziertes aufrufen ist immer dann nötig wenn der Superkonstruktor parameterisiert ist.

Also besten dank an alle
 

pommespaula

Mitglied
Also ist es äußerst sinnvoll auch immer einen parameterfreien Konstruktor in einer Klasse anzulegen(Der überhaupt nix macht) um zu verhinder das beim impleziten Aufruf super() kein Fehler entsteht!
 

foobar

Top Contributor
Also ist es äußerst sinnvoll auch immer einen parameterfreien Konstruktor in einer Klasse anzulegen(Der überhaupt nix macht) um zu verhinder das beim impleziten Aufruf super() kein Fehler entsteht!
Um solche Fehler zu vermeiden, verwendet man IDE's, dann wird man sofort auf solch ein Problem hingewiesen. 8)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1
T Vererbung, Konstruktor erweitern Java Basics - Anfänger-Themen 4
F Hilfe bei Konstruktor bzw. Vererbung Java Basics - Anfänger-Themen 8
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben