微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果抽象也可以在程序上完成,那么抽象如何成为 OOP 的优势?

如何解决如果抽象也可以在程序上完成,那么抽象如何成为 OOP 的优势?

我对编程完全陌生,不明白为什么抽象是 OOP 的优势。所有网站都提到抽象是 OOP 的主要优势之一,但这也可以通过程序实现。

如果我写:

int add(int x,int y){
   return x + y;
}

int main() {
   int z = add(3,4);
}

抽象用于隐藏背景细节或有关数据的任何不必要的实现,以便用户只能看到所需的信息,所以这不也是抽象,因为用户可以在不知道它是如何工作的情况下使用“添加”?我是否误解了抽象的概念,因为这基本上是我在网上得到的关于抽象的唯一定义?如果不是,那么如果您可以在没有 OOP 的情况下实现它,那为什么它是“优势”?

解决方法

你的问题还不错,但有点幼稚。很明显,您正在询问非常领先的主题。还好你很好奇。我没有冒犯的意思。

抽象不是一种语言支持或不支持的二进制事物。语言或多或少是抽象的,但所有语言都是汇编语言之上的抽象。我很喜欢 C,但它不适合抽象。

抽象是一个非常广泛的东西。你的问题有点像管乐器的目的是什么,因为吉他“可以发出声音”。完全没有暗示这将是一个愚蠢的问题。我提到它只是为了说明抽象的主题有多么广泛。创建一个简单的函数基本上是冰山顶部的几个分子。

只是为了展示一个快速且非常简单的例子:

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

class Triangle : public Shape {
private:
    double base,height;

public:
    double area() { return base*height/2.0; }
};

class Square : public Shape {
private:
    double side;

public:
    double area() { return side*side; }
};

int main() {
    Shape shapes = new Shape[10];
    // Init code   
    for(int i=0; i<10; i++) {
        std::cout << "Area: " << shapes[i] << std::endl;
    }
}

这是一个抽象级别,在 C 中实现将非常混乱。然后,这甚至不是一个非常复杂的例子。就显示 OOP 而言,它是最基础的。

请原谅我的 C++ 代码。我从 C++ 学到的一切,都是我 20 年前学到的。所以它可能有点老派。也许它甚至不能编译,但这只是为了显示抽象。它针对的是来自 C 的人。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。