子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它
简要概述:弥补了继承“开-闭”
里氏转换原则为良好的继承定义了一个规范,包含了4层含义:
- 子类必须完全实现父类的方法
- 子类可以有自己的个性
- 覆盖或实现父类的方法时输入参数可以被放大
- 覆盖或实现父类的方法时输出结果可以被缩小
模式体现
- 策略模式
- 组合模式
- 代理模式
经典代码解析
Animal.java
public abstract class Animal{
public abstract void move();
}
Horse.java
public class Horse extends Animal{
public void move(){
System.out.println("马儿跑");
}
}
Bird.java
public class Bird extends Animal{
public void move(){
System.out.println("鸟儿飞");
}
}
TestLSP.java
public class TestLSP{
public static void main(String args[]){
Animal animal;
animal=new Horse();
animal.move();
animal=new Bird();
animal.move();
}
}
上述反过来子类对象指向父类违反里氏转换原则 //Horse h=new Animal();
网友评论