2012-11-19 97 views
1

我想知道Object是否也是“松散”抽象类的超类,也就是不扩展其他抽象类的抽象类。我不认为这很有效。但是,当把所有东西放在一起时,这个“正式”措辞如何呢?对象是抽象类的超类吗?

下列支持和抵触在主题行中的数Q i看到的方式:支持

(“是”至Q以上):ⅰ)一个具体的类可以从一个抽象继承II。 )每个班级都是Object的后裔,以及iii。)每个班级(除Object之外)都只有一个超班。如果Object不是抽象类的超类,那么(iii)对于Object的特殊情况必须违反 - “如果其中一个类是Object而另一类是抽象类,则类可以有两个超类。

矛盾(对Q的“否”):抽象类不能具体化,而Object是具体的。但是,这也可以被解释为“针对Object课程的特例”。

它比另一面更偏向一边吗?或者它仅仅是“两者兼有 - 对于Object班级来说是例外”。提前致谢。

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

在上面的原始消息中纠正我明显的错误: 抽象类可以明显地从具体的类继承。这也使Object成为他们的超类。

回答

0

我认为你感到困惑的是认为抽象类继承一个具体类是合法的。这很少见,但可能会发生。 This question显示了很多这样的例子。

+0

感谢您的链接 - 这使它。我一直都缺少从具体的继承的抽象类。 – ashley

+0

几乎所有的例子都有扩展其他具体类的具体类。实际上,我看到的唯一反例是ASP.NET的一个示例类层次结构(它不是Java)。如果你看到一个不同的反例,那么为什么不把它复制到你的答案中,而不是让读者梳理该页面呢? – ruakh

3

是的,Object是每个抽象类的超类型,而—是唯一的—甚至是超类型的接口。

一个抽象类不能被Sub要一个具体的一个,[…]

这是不正确。

0

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