OOP Polymorphism!

Rexodst

Mitglied
Hallo,
Ich hatte seit langer zeit immer etwas ignoriert Polymorphism...
Ich habe ein example:
Java:
public class test {
    public static void main(String[] args) {
        Vehicle dataVehicleConVehicle=new Vehicle("OBJ1)DataType: Vehicle, Called Constructor: Vehicle");
        Vehicle dataVehicleConCar=new Car("OBJ2)DataType: Vehicle, Called Constructor: Car(Vehicle.getName()",
                                          "OBJ2)DataType: Vehicle, Called Constructor: Car(Car.getName()");
        System.out.println(dataVehicleConVehicle.getName());
        System.out.println();
        System.out.println(dataVehicleConCar.getName());
        System.out.println(dataVehicleConCar.start());
    }
}
class Vehicle{
    private String name;

    public Vehicle(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
    public String start(){
        return ":";
    }
}
class Car extends Vehicle{
    private String name;

    public Car(String name, String name1) {
        super(name);
        this.name = name1;
    }

    @Override
    public String getName() {
        return name;
    }
    @Override
    public String start(){
        return "Starting Motor!";
    }
}

Wenn ich ein Objekt mit dem DatenTyp "Vehicle" und dessen constructor erstelle kann ich es ganz normal benutzen.
Wenn ich jedoch ein Objekt mit dem DatenTyp "Vehicle" und einem constructor "Car" erstelle kann ich nur funktionen und methoden von der classe "Vehicle", ausser wen ich eine methode in der classe "Car" @Override. Wieso??

Ich verstehe es einfach nicht, ich wäre sehr froh wen mir jemand dabei helfen kann.
MFG Rexo
 

Flown

Administrator
Mitarbeiter
Ich würde dir mal raten statische und dynamische Typen in Verbindung mit Polymorphismus und dynamic dispatching anzusehen. HIER mal ein Start.
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
dataVehicleConCar ist deklariert als ein Vehicel, zur Compilezeit ist noch gar nicht bekannt, welches Vehicel das ist, das kann Car sein, wie in dem Fall, aber ein ein Fahrrad oder einfach nur Vehicel.
Aufrufen kannst du nur Methoden, die zur Compilezeit bekannt sind, also alle Methoden des deklarierten Types - in dem Fall Vehicel.
 

Rexodst

Mitglied
Aha, und halt Overriden methods weil sie vorm compilieren automatisch zum datentyp vehicle gehören? Wenn ich es richtig verstanden habe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Polymorphism Java Basics - Anfänger-Themen 14
1 Polymorphism Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben