![]() |
1
3
我想补充一下贾斯汀和巴克斯特的话。 正确继承这个术语并没有很好的定义。正确使用继承是一个相当主观的问题。。。 考虑以下示例:
应该
在CS社区有一场战争。事实上,你会经常看到书在哪里
所以我自己的小定义是: |
![]() |
2
4
This thread 总结得很好:
|
![]() |
3
1
一般认为类的方法是与类的客户机创建契约:它保证只要调用满足某些前提条件的方法,该方法就会提供某些结果。”正确的“继承”是这样的:子类实例可以替换其父类而不违反父类的约定。也就是说,子类的任何方法都不应重写其基类的方法,这些方法要求更严格的前提条件,也不应提供更多“更少”的结果。返回到C++,因为在需要前一个公共和私有继承之间有明显的区别,因此可以用一个子类实例代替基类实例,所以通常认为“正确”的替换是语义正确的。否则为什么不使用私有继承呢?
是
我的答案是C++所持有的并不是任何面向对象语言的坏指南。在像Python这样的语言中,多态性不需要继承层次结构,人们可能更倾向于仅仅为了代码重用而使用继承。如果这种重用有很好的文档记录,可能就不是问题了。但是 当我看到一个类层次结构时,我的期望是一个子类可能会被多态地使用,因此子类的一个实例可以被基类的一个实例所替代,从而遵守 Liskov substitution principle |
![]() |
4
0
|
![]() |
Fernando Chu · 一个变量有多个可能的类?[关闭] 7 月前 |
![]() |
Amaterastis · 基类接受子类和内部子类的模板参数 8 月前 |
![]() |
Rishab Negi · 这个关键字在抽象类中是如何工作的 8 月前 |
![]() |
dEmigOd · 类层次结构中的运算符重载解析 9 月前 |
![]() |
TableTopRug · 如何从Kotlin中的密封类继承? 9 月前 |
![]() |
hasdrubal · 抽象基类函数指针python 1 年前 |
|
Josh · 通过反思访问孩子的财产 1 年前 |