Oop “这是什么意思?”;适用于“对象”的操作&引用;对“对象”的操作;?

Oop “这是什么意思?”;适用于“对象”的操作&引用;对“对象”的操作;?,oop,Oop,大多数时候,我对OOP(继承)中的术语感到困惑。让我今天用它结束我的战争:) 考虑(独立于语言的)代码: 现在,当xyz说在矩形上适用(或适用)的任何操作也适用于正方形时,xyz是在这里谈论成员函数还是(在中对矩形的任何操作)calculateArea函数或两者都包含?当xyz说由矩形提供的任何操作也由suqare提供时,他指的是所有三种操作square提供了calculateArea,更改长度(ing)和更改宽度(int) 当xyz说适用于矩形的任何操作也适用于正方形时,他所说的是计算器ea(

大多数时候,我对OOP(继承)中的术语感到困惑。让我今天用它结束我的战争:)

考虑(独立于语言的)代码:


现在,当xyz说在
矩形
上适用(或适用)的任何操作也适用于
正方形
时,xyz是在这里谈论成员函数还是(在中对矩形的任何操作)
calculateArea
函数或两者都包含?

当xyz说由
矩形提供的任何操作也由
suqare提供时,他指的是所有三种操作
square
提供了
calculateArea
更改长度(ing)
更改宽度(int)


当xyz说适用于
矩形
的任何操作也适用于
正方形
时,他所说的是
计算器ea(矩形)
也可以被称为传递
正方形
的实例
calculateArea
本身就可以调用类的公共方法。如果在子类中未重写超类的方法,它将执行这些方法

另见


请务必阅读SLaks提到的Wikipedia文章,该文章阐述了这一原则的一些主要问题。

@SLaks我不是在问示例设计中的陷阱),请再次阅读标题?我知道。我只是提醒您注意这个陷阱。但是当我们在
calculateArea
中操作对象时,最终我们将调用它的成员(本例中的方法)来更改它的状态?(忽略任何环境副作用)嗯-也许这是一个坏例子
calculateArea
希望不会操纵对象-我们只是计算面积,而不是改变它。然而,“calculateArea”当然会使用超类的成员(字段或方法)来实现其目的,那么,事情最终不是结束于成员方法吗?我似乎不理解这个问题。方法
changeArea
当然可以调用超类和自身的成员(字段和方法)。您介意注意
changeArea
calculateArea
不是成员函数吗?
class rectangle {
...
  void changeLength(int);
  void changeWidth(int);
...
}

class square : public rectangle { ... }

int calculateArea(rectangle){ ... }