gpt4 book ai didi

oop - 真的需要继承吗?

转载 作者:行者123 更新时间:2023-12-03 08:31:03 24 4
gpt4 key购买 nike

我必须承认我有点像 OOP 怀疑论者。面向对象的糟糕的教学和劳动经验并没有帮助。所以我变成了 Visual Basic 的狂热信徒(经典的!)。

然后有一天我发现 C++ 发生了变化,现在有了 STL 和模板。我真的很喜欢!使语言变得有用。然后有一天MS决定对VB进行面部手术,我真的很讨厌无端更改的最终结果(使用“end while”而不是“wend”会让我成为一个更好的开发人员?为什么不放弃“next”为“end for"也是如此?为什么要在 setter 旁边强制使用 getter?等等)以及我发现无用的 Java 特性(例如,继承和分层框架的概念)。

而现在,几年后,我发现自己在问这个哲学问题:继承真的需要吗?

四人组说我们应该支持对象组合而不是继承。想了想之后,我找不到可以用继承做的事情,而用对象聚合和接口(interface)做不到的事情。所以我想知道,为什么我们甚至首先拥有它?

有任何想法吗?我很想看到一个绝对需要继承的例子,或者在哪里使用继承而不是组合+接口(interface)可以导致更简单和更容易修改设计。在以前的工作中,我发现如果您需要更改基类,您还需要修改几乎所有派生类,因为它们取决于父类的行为。而且,如果您将基类的方法设为虚拟...则不会发生太多代码共享:(

否则,当我最终创建自己的编程语言时(我发现大多数开发人员都有一个长期未实现的愿望),我认为向它添加继承没有意义......

最佳答案

GoF(和许多其他人)建议您只支持组合而不是继承。如果你有一个 API 非常大的类,而你只想向它添加非常少的方法,而只留下基本实现,我会发现使用组合是不合适的。您必须重新实现封装类的所有公共(public)方法才能返回它们的值。当您可以继承所有这些行为并将时间花在新方法上时,这是浪费时间(程序员和 CPU)。

因此,要回答您的问题,不,您绝对不需要继承。然而,在许多情况下,它是正确的设计选择。

关于oop - 真的需要继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/278476/

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