Skip to content

Liskov Substitution Principle

  • Herhangi bir işlevsel kod bloğu kullandığı objenin gerçek tipini bilmeden işlem yapabilmelidir.

Hatalı Örnek

class Car{
    void drive();
}
class Airplane{
    void fly();
}
class Engine{
    void startEngine(Object vehicle){
        if(vehicle instanceof Car car){
            car.drive();
        }else if(vehicle instanceof Airplane airplane){
            airplane.fly();
        }
    }
}

Düzeltilmiş Örnek

interface Vehicle{
    void start();
}
class Car implements Vehicle{
    void drive();

    void start(){
        drive();
    }
}
class Airplane implements Vehicle{
    void fly();

    void start(){
        fly();
    }
}
class Engine{
    void startEngine(Vehicle vehicle){
        vehicle.start();
    }
}