Super Klasse Vererbung Problem :/

Tayfun42

Mitglied
Hallo,

wir behandeln gerade in der Schule die Vererbung mit Super extends usw. Jedoch habe ich paar Probleme, aber weiß nicht wo die liegen. Fahrzeug ist meine Oberklasse und PKW und LKW sind meine Unterklassen. Ich bekomme immer eine Fehlermeldung, könnte mir jemand da behilflich sein?;(


Fahrzeug Klasse
Java:
public class Fahrzeug{
  protected String hersteller;
  protected String model;
  
  public Fahrzeug(String hersteller, String model){
    this.hersteller = hersteller;
    this.model = model;
   } 
    
  
  public void setHersteller(String hersteller){
    this.hersteller = hersteller;
  }
  
  public void setModel(String model){
    this.model = model;
    }
    
  
  public String getHersteller(){
    return hersteller;
  }
  
  public String getModel(){
    return model;
    }
    
  
  public String toString(){
    return hersteller + model;
  }
  
}

LKW Klasse
Java:
public class LKW extends Fahrzeug{

  private String ladefläche;
  private String ps;
  
  public LKW (String hersteller, String model, String ladefläche, String ps){
    super(hersteller);
    super(model);
    this.ladefläche = ladefläche;
    this.ps = ps;
    }
  
  public void setLadefläche(String ladefläche){
    this.ladefläche = ladefläche;
  }
  
  public void setPs(String ps){
  this.ps = ps;
  }
  
  public String getLadefläche(){
  return ladefläche;
  }
  
  public String getPs(){
    return ps;
  }
  
  public String toString(){
    return ladefläche + " " + ps;
  }
  
 }

PKW Klasse
Java:
public class PKW extends Fahrzeug{
  
  private int sitzplatz;
  private double hochstgeschwindigkeit;
  
  public PKW (int sitzplatz, double hochstegeschwindigkeit){
    super(hersteller);
    super(model);
    this.sitzplatz = sitzplatz;
    this.hochstgeschwindigkeit = hochstegeschwindigkeit;
  }
  
  public void setSitzplatz(int sitzplatz){
  this.sitzplatz = sitzplatz;
  }
  
  public void setHochstgeschwindigkeit(double hochstgeschwindigkeit){
  this.hochstgeschwindigkeit = hochstegeschwindigkeit;
  }
  
  public int getSitzplatz(){
    return sitzplatz;
  }
  
  public double getHochstgeschwindigkeit(){
  return hochstgeschwindigkeit;
  }

  public String toString(){
  return hochstegeschwindigkeit + " " + sitzplatz;   
  }
}
 
Zuletzt bearbeitet:

Tayfun42

Mitglied
Das ist die komplette Meldung die ich bekomme.


Compiliere C:\Users\Dinc\Desktop\Vererbung\LKW.java mit Java-Compiler
LKW.java:7:5: error: constructor Fahrzeug in class Fahrzeug cannot be applied to given types;
super(hersteller);
^
required: String,String
found: String
reason: actual and formal argument lists differ in length
LKW.java:8:10: error: call to super must be first statement in constructor
super(model);
^
2 errors

Compiliere C:\Users\Dinc\Desktop\Vererbung\Fahrzeug.java mit Java-Compiler
C:\Users\Dinc\Desktop\Vererbung\Fahrzeug.java erfolgreich compiliert!

Compiliere C:\Users\Dinc\Desktop\Vererbung\PKW.java mit Java-Compiler
PKW.java:7:11: error: cannot reference hersteller before supertype constructor has been called
super(hersteller);
^
PKW.java:7:5: error: constructor Fahrzeug in class Fahrzeug cannot be applied to given types;
super(hersteller);
^
required: String,String
found: String
reason: actual and formal argument lists differ in length
PKW.java:8:10: error: call to super must be first statement in constructor
super(model);
^
PKW.java:18:32: error: cannot find symbol
this.hochstgeschwindigkeit = hochstegeschwindigkeit;
^
symbol: variable hochstegeschwindigkeit
location: class PKW
4 errors
 
Zuletzt bearbeitet:

geqoo

Bekanntes Mitglied
Der Eltern-Konstruktor erwartet nach dem:
Java:
public Fahrzeug(String hersteller, String model)
einen hersteller vom Typ String und ein model vom Typ String.

Du musst den Super-Konstruktor also auch so aufrufen, wie man ihn normalerweise aufruft: Mit den gleichen Argumenten - und nicht getrennt, so wie du es versuchst.

Statt diesen beiden Vögeln hier:

Java:
super(hersteller);
super(model);

Also das hier verwenden:

Java:
super (hersteller, model);
 
Zuletzt bearbeitet:

JavaGott

Gesperrter Benutzer
Ah ok, hätte mir aber auch auffallen können :)

Dein Konstruktor der Fahrzeug Klasse sieht 2 werte als Übergabe vor
Java:
public Fahrzeug(String hersteller, String model){

bedeutet du brauchst das:
Java:
super(hersteller, modell);
 

Tayfun42

Mitglied
Also hab mein Programm fertig geschrieben, aber ich weiß nicht wie ich Polymorhpie und Lade-Binding an 3 Beispielen erklären soll :/

Anwendung
[Java]


public class Anwendung {

public static void main(String[] args) {

Fahrzeug f = new Fahrzeug("Audi","A8");
Fahrzeug f2 = new Fahrzeug("VW","Passat");
LKW l = new LKW("Mercedes","Actro","XXL",700);
LKW l2 = new LKW("Icevo", "Stralis", "XL",500);
PKW p = new PKW("BMW","530i",5,240.0);
PKW p2 = new PKW("Porsche","Panamera",5,260.0);
Nutzfahrzeug n = new Nutzfahrzeug("Massey Ferguson","135","Traktor",5.5);
Nutzfahrzeug n2 = new Nutzfahrzeug("John Deere", "T 560i", "Mähdrescher",7.2);

System.out.println(f.toString());
System.out.println("Fahrzeug: " + l.getHersteller()+ " Model: " + l.getModel() + l.toString());
System.out.println("Fahrzeug: " + p.getHersteller()+ " Model: " + p.getModel() + p.toString());
System.out.println("Fahrzeug: " + n.getHersteller()+ " Model: " + n.getModel() + n.toString());


} // end of main

} // end of class Anwendung

[/code]

Fahrzeug Oberklasse
Java:
public class Fahrzeug{
  protected String hersteller;
  protected String model;
  
  public Fahrzeug(String hersteller, String model){
    this.hersteller = hersteller;
    this.model = model;
   } 
    
  
  public void setHersteller(String hersteller){
    this.hersteller = hersteller;
  }
  
  public void setModel(String model){
    this.model = model;
    }
    
  
  public String getHersteller(){
    return hersteller;
  }
  
  public String getModel(){
    return model;
    }
    
  
  public String toString(){
    return "Hersteller: "+ hersteller + " Model: "+ model;
  }
  
}

LKW
Java:
public class LKW extends Fahrzeug{

  private String ladefläche;
  private int ps;
  
  public LKW (String hersteller, String model, String ladefläche, int ps){
    super(hersteller, model);
    this.ladefläche = ladefläche;
    this.ps = ps;
    }
  
  public void setLadefläche(String ladefläche){
    this.ladefläche = ladefläche;
  }
  
  public void setPs(int ps){
  this.ps = ps;
  }
  
  public String getLadefläche(){
  return ladefläche;
  }
  
  public int getPs(){
    return ps;
  }
  
  public String toString(){
    return " Ladefläche: " + ladefläche + " PS: " + ps;
  }
  
 }

PKW
Java:
public class PKW extends Fahrzeug{
  
  private int sitzplatz;
  private double hochstgeschwindigkeit;
  
  public PKW (String hersteller, String model, int sitzplatz, double hochstegeschwindigkeit){
    super(hersteller, model);
    this.sitzplatz = sitzplatz;
    this.hochstgeschwindigkeit = hochstegeschwindigkeit;
  }
  
  public void setSitzplatz(int sitzplatz){
    this.sitzplatz = sitzplatz;
  }
  
  public void setHochstgeschwindigkeit(double hochstgeschwindigkeit){
    this.hochstgeschwindigkeit = hochstgeschwindigkeit;
  }
  
  public int getSitzplatz(){
    return sitzplatz;
  }
  
  public double getHochstgeschwindigkeit(){
    return hochstgeschwindigkeit;
  }
  public String toString(){
    return " Sitzplatz: " + sitzplatz + " Hochstgeschwindigkeit: " + hochstgeschwindigkeit;
    
  }
}

Nutzfahrzeug
Java:
public class Nutzfahrzeug extends Fahrzeug{
  
  private String typ;
  private double gewicht;
  
  
  public Nutzfahrzeug(String hersteller, String model, String typ, double gewicht){
    super(hersteller, model);
    this.typ=typ;
    this.gewicht=gewicht;
  }
  
  public void setTyp(String typ){
    this.typ=typ;
    }
  public void setGewicht(double gewicht){
    this.gewicht = gewicht;
    }
    
   public String getTyp(){
    return typ;     
    }                 
   public double getGewicht(){  
    return gewicht;
  }  
  
  public String toString(){
    return " Typ: "+ typ + " Gewicht: "+ gewicht + " Tonnen";
  }
  
  }

Polymorphie wäre also das setzen der noch dazu gegeben Werte in die Objekte? Oder dass man durch die Polymorphie eine Vielfältigkeit hat?



Hier ist nochmal die Aufgabenstellung die ich dazu bekommen hatte:
http://217.17.29.241/pluginfile.php/35774/mod_assign/intro/Aufgabenstellung_Autohandel.pdf
 
Zuletzt bearbeitet:

calousy

Mitglied
Late Binding: Die richtige Funktion wird erst zur Laufzeit herausgefunden.
So wie du das hast, ist das deine toString() Methode. Allerdings musst du deinen Instanzen als Typen die Superklasse geben, um das zu zeigen. Also z.B. Fahrzeug f = new LKW();
Für Late Binding (auch als dynamische Bindung bekannt) musst du eine Methode in einer abgeleiteten Klasse überschreiben. Anderes Bsp.:
Java:
class Fahrzeug {
    public void start()
    {
        System.out.println("BrummBrumm");
    }
}
    
class Brummi extends Fahrzeug
{
    @Override
    public void start() {
        System.out.println("BRUUUUUUUMMMMMMMMM");
    }
}
Fahrzeug fahrzeug = new Brummi();
fahrzeug.start(); // BRUUUUUUUMMMMMMMMM
fahrzeug = new Fahrzeug();
fahrzeug.start(); // BrummBrumm

Deine Aufgabenstellung kann keiner sehen, da von hier vermutlich niemand einen Zugang außer du da hat (Link -> Weiterleitung auf https://217.17.29.241/login/index.php).
 
Zuletzt bearbeitet:

Tayfun42

Mitglied
Hier ist nochmal die Aufgabenstellung hochgeladen als Anhang.

Jetzt habe ich in meine Anwendung den Code,

Java:
   Fahrzeug fa = new PKW("BMW","730",5,230.0);       
    
    System.out.println(fa.toString());

noch hinzugefügt. Wäre das also Late-Binding? Und wenn ich fa.toString() ausgebe.. gibt er mir nur Sitzplatz 5 und Hochstgeschwindigkeit 230.0 aus. Wieso wird Hersteller und Model nicht mit ausgegeben? :bahnhof:
 

Anhänge

  • Aufgabenstellung_Autohandel.pdf
    268,7 KB · Aufrufe: 7

calousy

Mitglied
ja, das ist dynamische Bindung. Wenn du bei PKW das toString-Methode rausnimmst, was kommt dann… das von der nächst höheren Klasse, in deinem Fall Fahrzeug.
Dass nur Sitzplatz und Höchstgeschwindigkeit ausgegeben wird ist eben Teil der Polymorphie :)
Schau dir mal deine Methode toString() in deiner Superklasse Fahrzeug an. Sie ist public, gibt einen String zurück und hat keine Parameter. Diese 3 Merkmale nennt man die Signatur der Methode toString.
Jetz gehst du her und leitest deine Klasse PKW von Fahrzeug ab. Gehen wir mal davon aus, dass du hier nicht die toString Methode implementierst. Du machst also
Java:
Fahrzeug f = new PKW();
f.toString();
Ausgabe: "Hersteller xy Model z"
nun implementierst du in deiner Klasse PKW exakt dieselbe Methode toString, mit exakt derselben Signatur, also "public String toString()". Du überschreibst damit die Methode der Superklasse - und damit eben alles was sie zurückgibt. In deinem Fall kann also nur Sitzplatz und Höchstgeschwindigkeit ausgegeben werden, da du ja alles andere überschreibst.
Wenn du jetzt trotzdem alles aus der Methode der Superklasse ausführen willst, kannst du das aber auch machen.
Java:
public String toString()
{
    String superString = super.toString(); // toString()-Methode der Superklasse "Fahrzeug" aufrufen und Ausgabe speichern
    System.out.println(superString); // Ausgeben
    System.out.println("hier die spezielle Ausgabe der Klasse PKW");
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
perlenfischer1984 Mit Lombok Builder Felder in Super Klasse füllen Allgemeine Java-Themen 12
L Super User via Processbuilder (Linux) Allgemeine Java-Themen 3
J Überschriebene Funktion soll nicht die super Funktion aufrufen Allgemeine Java-Themen 4
Hacer List<? super E> Allgemeine Java-Themen 10
P Performance: super explizit erwähnen oder weglassen? Allgemeine Java-Themen 5
E Super erzwingen, konzept/pattern gesucht. Allgemeine Java-Themen 8
G super- Methode aufrufen Allgemeine Java-Themen 21
trash super + JTable Allgemeine Java-Themen 7
trash super() mit Variable bestücken Allgemeine Java-Themen 3
G Super- und Subclass Allgemeine Java-Themen 2
S Stellung von super() Allgemeine Java-Themen 4
G super.super Allgemeine Java-Themen 7
conan2 super-super-Konstruktor? Allgemeine Java-Themen 3
P mehrere super klassen Allgemeine Java-Themen 10
thE_29 Foxtrot doch nicht so super. Allgemeine Java-Themen 12
D super-Konstruktor ist nicht super ;) Allgemeine Java-Themen 6
H Super-Konstruktor Allgemeine Java-Themen 7
V Vererbungsproblem --> Implicit super constructor Allgemeine Java-Themen 5
thE_29 PrintStream und super.println() Allgemeine Java-Themen 2
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
kanywayne Java programmieren: Polynom Klasse Allgemeine Java-Themen 4
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
C Klasse mit Mockito simulieren Allgemeine Java-Themen 9
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
S static in Interface und Klasse Allgemeine Java-Themen 2
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D javassist API Klasse in MethodCall ermitteln Allgemeine Java-Themen 8
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
J Builder Klasse mit Lombok bauen Allgemeine Java-Themen 2
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
M [SOAP] - Klasse aus WSDL ausschließen Allgemeine Java-Themen 2
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
X Klassen Klasse BreakIterator Allgemeine Java-Themen 6
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
M Matcher-Klasse findet match nicht Allgemeine Java-Themen 6
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
Neoline Klassen Singleton Klasse buchmanager Allgemeine Java-Themen 19
M Kapselung Modellierung von Intervallen: Klasse Interval Allgemeine Java-Themen 4
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
ReinerCoder Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
J IndexOutOfBoundsException bei der Nutzung der Klasse Message von mime4j Allgemeine Java-Themen 5
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
perlenfischer1984 Lombok Builder soll andere Klasse bauen Allgemeine Java-Themen 4
T String aus While Schleife für ganze Klasse sichtbar machen Allgemeine Java-Themen 5
K Best Practice Auf die Klasse zugreifen im erzeugten ActionListener Allgemeine Java-Themen 2
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Allgemeine Java-Themen 7
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
Messoras Klassen Sämtliche Variablen einer Klasse übernehmen Allgemeine Java-Themen 6
H Methoden Methode 'updateItem' der Klasse 'TreeCell' Allgemeine Java-Themen 3
B Animierte Klasse schreiben - Wie? Allgemeine Java-Themen 9
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
L Eclipse JavaFX Klasse starten programmatisch Allgemeine Java-Themen 1
F Try/catch über ganze Klasse Allgemeine Java-Themen 9
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
so_ein_Komischer Erste Schritte java Math Klasse finden? Allgemeine Java-Themen 2
J beans.instantiate(): Klasse kann nicht instanziiert werden Allgemeine Java-Themen 2
I Interface Interface / Klasse - wieso Abstract? Allgemeine Java-Themen 13
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
F Methodenaufruf mit abgeleiteter Klasse als Arg... Allgemeine Java-Themen 10
M Klasse in separaten Thread ausführen.Wie genau? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben