1
3
我想补充一下贾斯汀和巴克斯特的话。 正确继承这个术语并没有很好的定义。正确使用继承是一个相当主观的问题。。。 考虑以下示例:
应该
在CS社区有一场战争。事实上,你会经常看到书在哪里
所以我自己的小定义是: |
2
4
This thread 总结得很好:
|
3
1
一般认为类的方法是与类的客户机创建契约:它保证只要调用满足某些前提条件的方法,该方法就会提供某些结果。”正确的“继承”是这样的:子类实例可以替换其父类而不违反父类的约定。也就是说,子类的任何方法都不应重写其基类的方法,这些方法要求更严格的前提条件,也不应提供更多“更少”的结果。返回到C++,因为在需要前一个公共和私有继承之间有明显的区别,因此可以用一个子类实例代替基类实例,所以通常认为“正确”的替换是语义正确的。否则为什么不使用私有继承呢?
是
我的答案是C++所持有的并不是任何面向对象语言的坏指南。在像Python这样的语言中,多态性不需要继承层次结构,人们可能更倾向于仅仅为了代码重用而使用继承。如果这种重用有很好的文档记录,可能就不是问题了。但是 当我看到一个类层次结构时,我的期望是一个子类可能会被多态地使用,因此子类的一个实例可以被基类的一个实例所替代,从而遵守 Liskov substitution principle |
4
0
|
Brendan · Java中从父类继承的对象的ArrayList 2 年前 |
Tali · 继承-您应该使用基类,还是它们只是子类的框架? 2 年前 |
mask2 · 如何轻松访问继承类的功能? 2 年前 |
Dimon · 父类中的Setter,以及一些没有参数的子类 2 年前 |
Miguerurso · Javascript类继承无法正常工作 2 年前 |
GuessMe · 返回新类对象的正确方法(也可以扩展) 2 年前 |
Daniel Lizik · 重写父类构造函数的子类成员初始值设定项 2 年前 |
i_know_what · 以基类作为参数重写错误的方法 2 年前 |