Ich möchte, dass ein Objekt mehrere erweiterte Objekte behandelt. Das Endergebnis sollte sein, dass ich ein Fahrrad oder MotorBike passiere, es wird die Information anzeigen. In meinem Beispiel unten möchte ich, dass eine Klasse (Display) Bike oder MotorBike (die Bike erweitert) akzeptiert und die Informationen entsprechend anzeigt. Der Fehlerpunkt befindet sich in Anzeige, wobei die letzte Zeile die für MotorBike eindeutigen Informationen ausgibt. Ich bin sicher, ich vermisse etwas Einfaches, aber ich verstehe einfach nicht, was ich falsch mache.Ein Objekt, das mehrere erweiterte Objekte mit demselben Code bearbeitet
Danke für Ihre Hilfe.
Problem.java
public class Problem {
public static void main(String[] args) {
new Display(new Bike());
new Display(new MotorBike());
}
}
Bike.java
class Bike {
private boolean frontTireOk;
private boolean backTireOk;
private int gears;
public Bike() {}
public boolean isFrontTireOk() {
return frontTireOk;
}
public void setFrontTireOk(boolean frontTireOk) {
this.frontTireOk = frontTireOk;
}
public boolean isBackTireOk() {
return backTireOk;
}
public void setBackTireOk(boolean backTireOk) {
this.backTireOk = backTireOk;
}
public int getGears() {
return gears;
}
public void setGears(int gears) {
this.gears = gears;
}
}
Motorrad, Java
class MotorBike extends Bike {
private int engineCC;
public MotorBike() {}
public int getEngineCC() {
return engineCC;
}
public void setEngineCC(int engineCC) {
this.engineCC = engineCC;
}
}
Display.java
class Display {
Bike bike;
public Display(Bike bike) {
this.bike = (Bike) bike;
showBike();
}
Display(MotorBike motorBike) {
this.bike = (MotorBike) motorBike;
showBike();
}
private void showBike() {
System.out.println("Front tire is OK ?" + bike.isFrontTireOk());
System.out.println("Back tire is OK? " + bike.isBackTireOk());
System.out.println("Gears? " + bike.getGears());
if(bike instanceof MotorBike){
System.out.println("Engine CC? " + bike.getEngineCC()); <--FAIL
}
}
}
Danke! Ich wusste, dass es etwas Einfaches war. Nun, einfach, wenn Sie es wissen. :) – Techogre