gpt4 book ai didi

oop - 面向对象编程的优点或特点是什么?

转载 作者:行者123 更新时间:2023-12-04 17:40:01 25 4
gpt4 key购买 nike

是什么让大家从顺序语言转到了对象语言?

根据Wikipedia面向对象编程的特点是数据抽象、封装、消息传递、模块化、多态性和继承。对我来说,数据抽象、封装、消息传递、模块化也存在于顺序语言中。只有多态性和继承是特定于面向对象编程的。它是否正确 ?

最佳答案

许多非 OOP 语言当然可以构建这些功能。仅从 C 与 C++ 领域来看,您可以通过使用不透明指针提供 C 中的封装,使用一组获取/返回这些不透明对象的函数,以及一组全是文件静态的内部函数。您甚至可以使用函数指针和封装对象进行多态性和继承。

话又说回来,我们也可以仍然使用汇编或机器语言进行编程。将任何特性引入语言的原因是为了更容易使用该特性。

同样,看看 C 与 C++,处理不透明的指针等是烦人的、重复的和半困难的。使用 C++,您可以用更少的代码实现相同的效果。每个人都清楚发生了什么。打破它要困难得多(尽管并非不可能)。另外,如果需要,您可以轻松打破封装,因为您可以定义语言结构,如 friend在必要时提供异常(exception)。

然后有些东西如果没有直接的语言支持就很难实现。运算符重载当然是不可能的,但是如果没有语言支持,函数重载真的非常非常难。

最重要的是,如果它是在语言中,那么每个人都以同样的方式去做。在 C 中实现继承和多态的方法有很多种。它们都互不兼容。虽然 C++ 用户可以使用其中任何一种方法,但他们在 99.9% 的时间里选择使用实际的语言特性。这意味着阅读别人的代码并知道发生了什么要容易得多。您不必猜测什么是不透明的,什么不是。你不必猜测什么是从什么派生的。你知道的,因为每个人都这样做。

无论如何,如果您愿意,大多数 OOP-lite 语言(C++、Java、C#)都可以或多或少地像程序语言一样使用。您只是忽略对象。因此,在许多方面,他们都获得了两全其美。

关于oop - 面向对象编程的优点或特点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6384188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com