小编rai*_*yan的帖子

尝试理解里氏替换原理

我试图理解里氏替换原则,我有以下代码:

class Vehicle {
}

class VehicleWithDoors extends Vehicle {
    public void openDoor () {
        System.out.println("Doors opened.");
    }
}

class Car extends VehicleWithDoors {
}

class Scooter extends Vehicle {
}

class Liskov {
    public static void function(VehicleWithDoors vehicle) {
        vehicle.openDoor();
    }

    public static void main(String[] args) {
        Car car = new Car();
        function(car);
        Scooter scooter = new Scooter();
        //function(scooter);  --> compile error
    }
}

Run Code Online (Sandbox Code Playgroud)

我不确定这是否违反。原则上说,如果你有一个类 S 的对象,那么你可以用类 T 的另一个对象替换它,其中 S 是 T 的子类。但是,如果我写怎么办

Vehicle vehicle = new …
Run Code Online (Sandbox Code Playgroud)

java solid-principles

4
推荐指数
1
解决办法
2507
查看次数

标签 统计

java ×1

solid-principles ×1