1
3
我想补充一下贾斯汀和巴克斯特的话。 正确继承这个术语并没有很好的定义。正确使用继承是一个相当主观的问题。。。 考虑以下示例:
应该
在CS社区有一场战争。事实上,你会经常看到书在哪里
所以我自己的小定义是: |
2
4
This thread 总结得很好:
|
3
1
一般认为类的方法是与类的客户机创建契约:它保证只要调用满足某些前提条件的方法,该方法就会提供某些结果。”正确的“继承”是这样的:子类实例可以替换其父类而不违反父类的约定。也就是说,子类的任何方法都不应重写其基类的方法,这些方法要求更严格的前提条件,也不应提供更多“更少”的结果。返回到C++,因为在需要前一个公共和私有继承之间有明显的区别,因此可以用一个子类实例代替基类实例,所以通常认为“正确”的替换是语义正确的。否则为什么不使用私有继承呢?
是
我的答案是C++所持有的并不是任何面向对象语言的坏指南。在像Python这样的语言中,多态性不需要继承层次结构,人们可能更倾向于仅仅为了代码重用而使用继承。如果这种重用有很好的文档记录,可能就不是问题了。但是 当我看到一个类层次结构时,我的期望是一个子类可能会被多态地使用,因此子类的一个实例可以被基类的一个实例所替代,从而遵守 Liskov substitution principle |
4
0
|
Jooseppi Luna · 在有条件的情况下,你把做作业叫做什么? 7 年前 |
konchy · 为什么我们称CNN中的完全连接层为“顶层”? 7 年前 |
Michal Charemza · 始终为真的if条件的术语 7 年前 |
user3478869 · “实时软件开发”一词指的是什么? 9 年前 |
Sumit Gera · C++中的辅助函数是什么? 11 年前 |
Tarik · 如何理解“合同”的含义 11 年前 |