里式替换原则 说的是一种继承的方式,继承又可以实现多态,多态可以实现 扩展。即该原则实现 扩展开发原则。
里式替换原则 注意点:
1. 子类不能随便重写 父类非虚方法,如 用 new 或者新建同名方法,这是不提倡的
2.父类方法有意让子类方法重写,须生命为虚方法或者抽象方法
原则到达的效果是:
Father father = new Son();
Son son = new Son();
father.test();
son.test(); //执行结果一样。
执行结果非要一样吗,如果我Son重写了Father的方法,签名就算一样,但是结果不一定一样啊。
里式替换原则只是说Father son = new Son()这样定义的父子类满足这个原则
跟Son son = new Son();这句话没有任何关系把,只要能实例化的类这句话基本都能执行的吧?
Son类独有的东东出现的地方,Father根本出现不了,当然也就没有里式替换什么事了。以前是我自己理解歪了。多谢大神了
任何基类(Father)可以出现的地方,子类(Son)一定可以出现 —— 好好理解下这句话。
Son 可以继承 Father 吗?
Son当然可以继承Father了,因为Father可以实现的东西,用Son一定也可以,最多就是实现效果不一样。但是Son类独有的东东出现的地方,Father根本出现不了,当然也就没有里式替换什么事了。以前是我自己理解歪了。多谢大神了
共性的东西可以定义在基类里,特性的东西只能使用子类来处理了。
一个可行的方案是使用接口来识别某些特别的特性。
就是面向接口编程是吗,这个我最近自己写点小例子,有点感悟
@代码小兵的成长: 谈不上面向接口还是OOP。
毕竟,在C++里,接口也是一个类。
Father和Son,你要:
Father son = new Son()
后使用Son的特性,这个是不可能的。
@519740105: 多谢大神