public class RennAuto extends Auto {
private Fahrgestell fahrgestell;
public RennAuto(int leistung, int anzInsassen) {
super(leistung, anzInsassen);
fahrgestell = new SuperTollesFahrgestell();
}
@Override
public void setLeistung(int leistung) {...
public class Auto {
private int leistung;
private int anzahlInsassen;
public void setleistung(int value) {
this.leistung = value;
}
public int getleistung() {
return this.leistung;
}
public void setanzahlInsassen(int value) {
this.anzahlInsassen= value;
}
public int getanzahlInsassen() {
return this.anzahlInsassen;
}
public Auto ()
{
leistung= 75;
anzahlInsassen= 1;
}
public Auto (int leist, int anz)
{
this.leistung=leist;
this.anzahlInsassen=anz;
}
}
Meine Antwort ist als eigener Kommentar unter meinem Beitrag erschienen... bin neu hierAn welchen Stellen hängst du denn und was hast du bisher versucht?
Das sieht erst einmal gut aus, aber die Aufgabe gibt vor, dass im Konstruktor die Setter benutzt werden sollen.
Aber ansonsten kannst Du mit der zweiten Aufgabe ja weiter machen.
public class RennAuto extends Auto {
private Fahrgestell fahrgestell;
public RennAuto(int leistung, int anzInsassen) {
super(leistung, anzInsassen);
fahrgestell = new SuperTollesFahrgestell();
}
@Override
public void setLeistung(int leistung) {
super.setLeistung(leistung);
if (leistung > 100) {
fahrgestell.setSportMode(true);
}
}
}
Danke für die ausführliche Antwort.Ja, sieht erst einmal gut aus.
Bezüglich Naming evtl. noch auf camelCase achten: setLeistung / setAnzahlInsassen.
Und evtl. an der Stelle noch einen Hinweis bezüglich möglicher Probleme:
Es kann problematisch sein, wenn ein Konstruktor eine Methode aufruft, die überschrieben werden kann. Also einfach mal ein Beispiel aus dem Fingern saugen:
Von Deiner Klasse Auto leite ich eine Klasse RennAuto ab. Das wird etwas in der Art:
(Ist jetzt aus dem Kopf geschrieben ohne IDE und so ... Fehler bitte entschuldigen - ich mache zu viel Dart und Flutter in letzter Zeit.)Java:public class RennAuto extends Auto { private Fahrgestell fahrgestell; public RennAuto(int leistung, int anzInsassen) { super(leistung, anzInsassen); fahrgestell = new SuperTollesFahrgestell(); } @Override public void setLeistung(int leistung) { super.setLeistung(leistung); if (leistung > 100) { fahrgestell.setSportMode(true); } } }
Mein RennAuto hat halt ein super tolles Fahrgestell. Und bei höherer Leistung muss das in ein speziellen Sport-Modus gehen, damit das Fahrverhalten ok ist. Das habe ich geschrieben als ich noch die Auto Klasse ohne Deine Setter Anpassung hatte und alles funktionierte ...
Nun kommt von Dir ein kleines Update und nun geht nichts mehr! (Da es weltweit genutzt wurde, passiert etwas in der Art: Die Erde hat sich sozusagen aufgehört zu drehen und alle AKW sind explodiert, Kalifornien ist im St. Andreas Graben verschwunden und und und ... Also Thema von Emmerichs neuem Kinofilm. (Ok, alles etwas übertrieben, ich frühstücke manchmal einen Clown ...)
Siehst Du denn das Problem? Thema des Threads ist ja Vererbung und so und da gehört das mit rein.
ok alles klar ^^, melde mich mit Aufgabe 2 wiederDie Aufgabe ist korrekt gelöst und da musst du nichts mehr ändern. Das war nur eine Anmerkung, da die Aufgabe etwas gefordert hat, das auch durchaus problematisch sein kann.
Sollte Dich das verwirrt haben, dann tut es mir leid - dann könntest du die Anmerkung erst einmal ignorieren.
PKW[auto];
erzeugt keine gewünschte Variable ...So? Es wird mir nun wenigstens auch kein Fehler mehr angezeigtDa dann einfach noch einmal schauen:
- Wie erzeugst Du eine Variable die ein Array eines bestimmten Typs aufnehmen kann?
- Wie erzeugst Du dann so ein Array?
Den Zugriff selbst hast Du mit dem auto[0]=.... ja prinzipiell schon richtig gemacht. AberPKW[auto];
erzeugt keine gewünschte Variable ...
Wenn ich aber es ausprobiere, bekomme ich leider eine FehlermeldungSo? Es wird mir nun wenigstens auch kein Fehler mehr angezeigt
public class AutoTest{
public static void main(String[] args) {
//
PKW[] array= new PKW[5];
array[0]=new PKW(75,2,"Ford","Focus");
array[1]=new PKW(75,5,"Opel","Adam");
array[2]=new PKW(100,4, "Audi"," Avant");
array[3]=new PKW(50, 5, "Renault","Zoe");
array[4]=new PKW(101,5, "Skoda","Fabia");
array[5]=new PKW(70,4, "VW","Golf");
for (int i=0; i<array.length;i++) {
System.out.println("leistung: "+ array.getleistung());
System.out.println("Anzahl Insassen: "+ array.getanzahlInsassen());
System.out.println("Hersteller: "+ array.gethersteller());
System.out.println("Modell: "+ array.getmodell());
}
}
}
Zähl mal, wie viele PKW Du erzeugst und dem Array zuweist und dann schau mal, wie groß Du Dein Array erzeugt hast.Wenn ich aber es ausprobiere, bekomme ich leider eine Fehlermeldung
Da fehlt "ausnahmsweise"@mihe7 war schneller![]()