我大部分时间都在与OOP(继承)中的术语混淆。因此,今天结束了我的战争:)
考虑(语言无关)代码:
class rectangle {
...
void changeLength(int);
void changeWidth(int);
...
}
class square : public rectangle { ... }
int calculateArea(rectangle){ ... }
现在,当xyz表示rectangle
上适用(或适用)的任何操作也适用于square
时,是xyz在这里谈论成员函数还是(对矩形的任何操作) calculateArea
功能或两者都包含在内?
答案 0 :(得分:0)
当xyz表示<{1}}由提供的的任何操作也由 rectangle
提供时,他正在谈论所有三个操作。 suqare
提供square
,calculateArea
和changeLength(ing)
。
当xyz表示任何适用的操作<{1}}对<{1}} 适用时,他正在谈论的事实也可以在changeWidth(int)
的实例中调用rectangle
。 square
本身可以调用类的公共方法。如果超类的方法没有在子类中重写,它将执行超类的方法。
另见Wikipedia: Inheritance (Computer Science)
请务必阅读SLaks提到的关于Circle-Ellipse-Problem提及的维基百科文章,该文章解决了该原则的一些主要问题。