我有一个简单的问题:
如果我声明一个类A - 意味着该类隐式继承自Object Class。
现在如果B类继承自A类
这个B类也不是从Object类继承吗?
如果是,这是否意味着编写关键字'extends'一些如何覆盖隐式继承(来自Object类)?
答案 0 :(得分:12)
所有类都直接或间接地从Object
隐式或显式扩展,Java中的整个类层次结构最终指向Object
,它位于根。例如,当你写这个:
public class MyClass extends Object {
与此完全相同:
public class MyClass {
如果我们有这个:
public class MySubClass extends MyClass {
然后MySubClass
从MyClass
延伸而来自Object
。它是一个传递性继承关系,它只发生在一个方向:在层次结构中没有任何一点,单个类可能从多个类扩展 - 这就是为什么我们说在Java中我们有单继承(相反) to:多重继承。)
答案 1 :(得分:1)
当你'扩展'时,你的类从基类中获取所有内容并添加额外的东西。所以,如果A扩展了Object,你就得到了A中的所有Object。如果B扩展了A,它将获得所有的A,它也包含所有的Object。所以,B现在有了对象,A和B本身的任何东西。
多重继承是指一次从多个事物中扩展一个类:
public class M extends SomeBase, AndAnotherBase {
Java中不允许这样做。它在允许它的语言中增加了复杂性,因为你最终可以使用由SomeBase,AndAnotherBase组成的类M ......并且如果它们都已经从Object派生...... M中将包含2个对象。这开始变得棘手,因为你必须知道你正在处理的M中的哪个对象。