Object是抽象类的超类吗?

时间:2012-11-19 22:41:17

标签: java object inheritance

我想知道Object是否也是“松散”抽象类的超类,即不扩展其他抽象类的抽象类。我认为这不重要。但是,在将所有事情放在一起时,如何对此进行“正式”措辞。

以下支持并反映主题行中的Q与我看到的方式相反:

支持(上面的Q为“是”):i。)具体类可以从抽象类继承,ii。)每个类都是Object的后代,而iii。)每个类(除了{ {1}})只有一个超类。如果Object不是抽象类的超类, 然后(iii)对于Object的特殊情况必然会被违反 - “如果一个类中的一个是Object而另一个是抽象的类,那么它可以有两个超类。”

矛盾(“否”与Q):抽象类不能归于具体的,Object是具体的。但是,这也可以被称为“对于Object类的特殊情况。”

它是一方面比另一方更多,还是仅仅是“两者兼而有之 - 对于Object类来说是特殊的”。提前致谢。

注意:我阅读了有关的讨论 Why java.lang.Object is not abstract?

纠正上述原始讯息中的明显错误: 抽象类显然可以从具体类继承。这使得Object成为他们的超类。

3 个答案:

答案 0 :(得分:3)

是的,Object是每个抽象类的超类型,并且 - 唯一 - 甚至是接口的超类型。

  

抽象类不能成为具体的,[...]

事实并非如此。

答案 1 :(得分:0)

我认为您感到困惑的是,抽象类继承Concrete类是合法的。这是相当罕见的,但它可能发生。 This question显示了不少这样的例子。

答案 2 :(得分:0)

是的,所有“松散”的抽象类都继承Object。抽象类继承具体类并不常见,但它是合法的。