黑马程序员技术交流社区

标题: 里氏替换原则 [打印本页]

作者: 18704635324    时间: 2016-7-11 22:56
标题: 里氏替换原则
1.里氏替换原则:用父类的指针指向子类的对象,对程序没有影响
比如:学生是人,可以用人类型的指针指向学生对象

2.里氏替换原则的局限性.父类指针指向子类对象,调用子类的独有的方法,编译报错


什么是编译检查?
编译检查就是程序运行之前的检查,就看这个指针定义的类型是否拥有某个方法/属性

什么是运行检查?
运行检查是程序运行过程中的检查.检查的是指针指向的对象是否拥有某个方法/属性

敲敲代码,打几个例子就会秒理解。。
作者: lxf041518    时间: 2016-7-11 23:47
来一个黑马币
作者: twototwoto    时间: 2016-7-12 07:54
一、里氏替换原则的定义
1、里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。
2、里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。
3、里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

二、里氏替换原则包含的含义
1、子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法
2、子类中可以增加自己特有的方法
3、当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松
参考:https://www.douban.com/note/363404356/
作者: hbpiaoyi    时间: 2016-7-12 09:24
谢谢总结~~~
作者: 18704635324    时间: 2016-7-12 18:26
lxf041518 发表于 2016-7-11 23:47
来一个黑马币

好人一生平安
作者: 18704635324    时间: 2016-7-12 18:27
twototwoto 发表于 2016-7-12 07:54
一、里氏替换原则的定义
1、里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功 ...

多谢补充
作者: wx_GhSVW08z    时间: 2016-7-12 19:59
加油 !!!
作者: 江小鱼    时间: 2016-7-12 22:33
来一个黑马币
作者: 18704635324    时间: 2016-7-13 12:17
江小鱼 发表于 2016-7-12 22:33
来一个黑马币






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2