里氏替换原则主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中蕴含的原理
通俗理解:只要有父类出现的地方,都可以用子类来替代,里氏替换原则对继承进行了规则上的约束,有以下4个方面
子类必须实现父类的抽象方法,但不得重写(覆盖)父类的非抽象(已实现)方法
⚠️ 如果子类覆写了父类中的非抽象方法会带来什么后果?
public class LSPtest { public static void main(String[] args) { Bird bird1 = new Swallow(); Bird bird2 = new BrownKiwi(); bird1.setSpeed(120); bird2.setSpeed(120); System.out.println("如果飞行300公里:"); try { System.out.println("燕子将飞行" + bird1.getFlyTime(300) + "小时."); System.out.println("几维鸟将飞行" + bird2.getFlyTime(300) + "小时。"); } catch (Exception err) { System.out.println("发生错误了!"); } } } //鸟类 class Bird { double flySpeed; public void setSpeed(double speed) { flySpeed = speed; } public double getFlyTime(double distance) { return (distance / flySpeed); } } //燕子类 class Swallow extends Bird {} //几维鸟类 class BrownKiwi extends Bird { @Override public void setSpeed(double speed) { flySpeed = 0; } }