【问题标题】:OOP Basic question about compositions, inheritances and polymorphismsOOP 关于组合、继承和多态的基本问题
【发布时间】:2021-07-11 02:56:30
【问题描述】:

我有this code,我想知道它是否有这三个概念:组合、继承和 多态性。(如果没有它们,我如何在代码中使用它们)

请帮忙。

【问题讨论】:

  • 这看起来像是由 80 年代学习 C++ 的人教授的代码,从那时起就再也没有费心跟上时代了。扔掉你学习 C++ 的任何教程,找一个更现代的。
  • @SilvioMayolo 嘿,至少是const double PI = 3.1415; 而不是#define PI 3.1415

标签: c++ algorithm oop data-structures


【解决方案1】:

这里是一个合成的例子:一个圆是由一个点和一个半径组成的:

class Circle : public Shape
{
private:
    Point center;
    double radius;

这是一个继承的例子:一个 Rectangle 是 Shape 的类型:

class Rectangle : public Shape

这是一个多态性示例:getArea() 方法在基类 (Shape) 中被声明为虚拟方法,然后以不同的(适合子类的)方式为每个子类重新实现:

class Shape
{
public:
    virtual double getArea() {};

[...]

class Circle : public Shape
{
    double getArea() {
        return radius * radius * PI;
    }

[...]

class Rectangle : public Shape
{
    double getArea() {
        return getWidth() * getHeight();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多