Is Object a superclass of abstract classes?
我想知道Object是否也是"松散"抽象类的超类,即不扩展其他抽象类的抽象类。我认为这并不重要。但是,当把所有的东西放在一起时,这个词的"正式"措辞是怎样的呢?
以下支持并与主题行中的Q相矛盾:
支持("是"到上面的q):i.)一个具体的类可以从一个抽象类继承,ii.)每个类都是Object的后代,iii.)每个类(Object除外)只有一个超类。如果Object不是抽象类的超类,那么(iii)对于Object的特殊情况,就必须违反——"一个类可以有两个超类,如果其中一个是Object类,另一个是抽象类。"
矛盾("no"to q):抽象类不能是具体类的子类,Object是具体类。但是,这也可以用"对于Object类的特殊情况"来表示。
它是在一边多于另一边,还是只是"两者兼而有之——对于Object类来说是例外"。事先谢谢。
注意:我阅读了关于为什么java.lang.object不是抽象的?.
纠正我在上述原始信息中的明显错误:抽象类显然可以从具体类继承。这也使对象成为超类。
是的,每一个抽象类都是一种超级类型,而且是一种超级类型的界面。
An abstract class cannot be sub to a concrete one, […]
这不是真的。
是的,所有的"Loose"抽象级的Object。对抽象的类别来说,不太常见,但它是合法的。
我认为你感到困惑的是,这是一个抽象级的法律,是一个具体级。这是罕见的,但它可能发生。这一问题的例子不少。
- 谢谢你的链接——就是这样。我一直缺少从具体类继承的抽象类。
- 几乎所有的例子都有扩展其他混凝土类的混凝土类。事实上,我所看到的唯一反例是来自ASP.NET的示例类层次结构(它不是Java)。如果你在那里看到了一个不同的反例,为什么不把它复制到你的答案里,而不是让读者去浏览那一页呢?