【发布时间】:2011-01-08 05:30:22
【问题描述】:
可能重复:
Java: Rationale of the Object class not being declared abstract
为什么 Object 类是 Java 中它们的基类,而不是抽象的?
这个问题我已经问了很久了,在这里问这个问题纯粹是出于好奇,仅此而已。我的代码或任何人的代码都没有破坏,因为它不是抽象的,但我想知道他们为什么把它具体化?
为什么有人想要这个 Object 类的“实例”(而不是它的存在,也就是引用)?一种情况是糟糕的同步代码,它使用对象的实例进行锁定(至少我曾经这样使用过一次......我的错)。
Object 类的“实例”有什么实际用途吗?它的实例化如何适应 OOP?如果他们将其标记为抽象(当然是在为其方法提供实现之后)会发生什么?
【问题讨论】:
-
+1,它立刻让我想到了同样的问题,但是关于基于 .NET 的语言
-
这个问题似乎有很多困惑;抽象类不需要有抽象方法。相反,问题是问“我们有什么真正的理由需要才能做到
new Object();?”如果不是,Object应该是抽象的。 -
另一方面,IMO 最好问的问题是:“有什么真正需要
Object应该是抽象的吗?”没有。所以应该是具体的。 -
问这个问题的目的正是为了找到使它具体化的原因,因为你需要一个理由来使一个类抽象,所以你要使它具体化,对吗?至于Object是否需要抽象的问题;一个答案是:我们对 Object 类感兴趣,因为它添加到子类的行为以及它在继承中的特殊 Super-Most 基类角色。我找不到此类实例的任何用途。如果 String 是最终的,那么必须有充分的理由说明 Object 是非抽象的,而不仅仅是它们可以使其非抽象,对吗?对吗?
-
+1 这是一个很好的问题。唯一正确的答案可以来自设计师,我们只能提供我们的意见。如果我们都只是就为什么它是抽象的给出我们的意见,我认为我们永远不会同意,但它很有趣!
标签: java oop abstract-class