Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
hab hier eine Oberklasse Fahrzeug.
Dann zwei Unterklassen: Auto und LKW, die beide von der Oberklasse Fahrzeug erben.
Jedoch hat Auto zusätzlich noch das Attribut sitzplaetze
und LKW noch das Attribut maxgewicht.
Ich möchte jetzt ein Objekt-Array erstellen in dem sowohl Objekte von Auto als auch Objekte von LKW gespeichert sind.
Geht das überhaupt?
Ich denke schon, aber wenn ich das Array dynamisch befülle, gibts n Problem:
Code:
Fortbewegunsmittel[] AlleFahrzeuge = new Fortbewegunsmittel[anzahl];
for (int i= 0; i<anzahl; i++) {
//... Art des Fahrzeugs wird vom Benutzer eingelesen
if (art == 'a') {
Auto AlleFahrzeuge[i] = new Auto();
else
LKW AlleFahrzeuge[i] = new LKW();
}
Ich glaube das das Problem schon im Array selbst liegt. Oder könnte man den Konstruktor von Auto und LKW so anpassen, dass er automatisch erkennt wenn ein Auto eingelesen wird?
Ein Array Fahrzeug geht nicht, weil Fahrzeug eine abstrakte Klasse ist.
Wenn ich folgendes mache:
Code:
Fahrzeug[] AlleFahrzeuge = new Fahrzeug[anzahl];
dann erzeuge ich doch ein Array das Fahrzeuge speichern kann.
Da jedoch Auto und LKW jeweils noch eigene Attribute haben, kann ich die dann nicht erreichen:
Code:
for (int i= 0; i<anzahl; i++) {
//... Art des Fahrzeugs wird vom Benutzer eingelesen
if (art == 'a') {
Auto AlleFahrzeuge[i] = new Auto();
AlleFahrzeuge[i].sitzplaetze = 5; <------------ das geht nicht weil sitzplaetze ein autospezifisches Attribut ist
else
LKW AlleFahrzeuge[i] = new LKW();
AlleFahrzeuge[i].maxgewicht = 40000; <---------- das geht nicht weil maxgewicht ja nur in LKW definiert.
}
doch du kannst ein array Fahrzeug erstellen
wenn du nacher die elemente auslesen willst
kannst mit instanceof herausfinden ob das Auto oder LKW ist und dann kannst du das object dementsprechen casten und auch auf die anderen attribute zugreifen
Das erzeugt doch ein array das fahrzeuge speichern kann.
aber das hier geht nicht weil sitzplaetze und maxgewicht nicht in fahrzeug sind sondern LKW bzw Auto spezifische Attribute sind:
Code:
for (int i= 0; i<anzahl; i++) {
//... Art des Fahrzeugs wird vom Benutzer eingelesen
if (art == 'a') {
Auto AlleFahrzeuge[i] = new Auto();
AlleFahrzeuge[i].sitzplaetze = 5; <------------ das geht nicht weil sitzplaetze ein autospezifisches Attribut ist
else
LKW AlleFahrzeuge[i] = new LKW();
AlleFahrzeuge[i].maxgewicht = 40000; <---------- das geht nicht weil maxgewicht ja nur in LKW definiert.
}
ich will ja erstmal die elemente gar nicht auslesen sondern was drin speichern.
Das erzeugt doch ein array das fahrzeuge speichern kann.
aber das hier geht nicht weil sitzplaetze und maxgewicht nicht in fahrzeug sind sondern LKW bzw Auto spezifische Attribute sind:
Code:
for (int i= 0; i<anzahl; i++) {
//... Art des Fahrzeugs wird vom Benutzer eingelesen
if (art == 'a') {
Auto AlleFahrzeuge[i] = new Auto();
AlleFahrzeuge[i].sitzplaetze = 5; <------------ das geht nicht weil sitzplaetze ein autospezifisches Attribut ist
else
LKW AlleFahrzeuge[i] = new LKW();
AlleFahrzeuge[i].maxgewicht = 40000; <---------- das geht nicht weil maxgewicht ja nur in LKW definiert.
}
ich will ja erstmal die elemente gar nicht auslesen sondern was drin speichern.
for (int i= 0; i<anzahl; i++) {
//... Art des Fahrzeugs wird vom Benutzer eingelesen
if (art == 'a') {
Auto a = new Auto();
a.sitzplaetze = 5;
AlleFahrzeuge[i] = a;
else
LKW l = new LKW();
l.maxgewicht = 40000;
AlleFahrzeuge[i] = l;
}