在学习里氏替换原则之前,首先应该理解继承的概念与好处,我们知道在java程序设计语言
中继承是通过extends关键字实现的,那么继承到底有哪些优点呢?
1、实现了代码共享
2、提高了代码的重用性
3、提高了代码的可扩展性
不过有利必有弊,继承虽然带来了很大的好处,但同时也有一定的弊病:
1、继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法。
2、子类必须继承父类的所有属性和方法,降低了代码的灵活性
3、增强了耦合性,但父类的属性被修改的时候,必须考虑到对子类的影响,使得代码
需要重构。
再来看看里氏替换原则的定义吧!
里氏替换原则有两种定义:
第一种定义,也是正宗的定义:如果对每一个类型为T1的对象o1,都有类型为T2的
对象o2 使得在程序中所有未o1的对象都替换为o2的时候,程序的行为没有发生变换,则
T2是T1的子类型。
第二种定义:所有可以使用父类的地方,都可以透明的使用其子类.通俗的讲就是父类
出现的地方,都可以用子类替换,程序不会出错,且程序的行为与替换之前一样!
如何理解里氏替换原则呢?首先举个经典的例子吧!
1、"正方形不是长方形".
我们知道在数学中正方形就是长方形,因此上述说法貌似不正确,不过真是
这样吗?看一段代码先吧。
长方形类
package com.kiritor;
/**
* @author Kiritor
* 长方形
*/
public class Rectangle {
private double length;
private double width;
public double getLength() {
return length;
}
public void setLength