当我们说“所有课程直接或间接地继承自班级Object
”时,我们的意思是什么?什么构成一个类间接继承其间接超类中声明的方法?
我们可以说一个类间接地继承了其中一个间接超类中声明的方法,而不管超级类中定义的方法在继承层次结构中向下传播时是否被覆盖,因此上面的注释是基于的事实上,子类继承了某些方法,其签名与超类中声明的签名相同。
或者,我们只能说一个类间接地继承了其中一个间接超类中声明的方法,当且仅当该类继承了在其间接超类中声明的方法时,该方法在传播时尚未被覆盖继承层次结构,该类继承方法的实现与它的间接超类中定义的相同。
答案 0 :(得分:10)
通过间接继承,它们意味着您扩展另一个本身扩展Object的类。直接继承自Object意味着你要么在类签名上明确声明extends Object
,要么你没有定义它应该扩展的另一个类(在这种情况下,无论如何它都会直接扩展Object
。)< / p>
就特定方法而言,您只继承层次结构中“最后覆盖”的方法。因此,如果我继承自继承toString()
的类,我将只继承覆盖版本,而不是Object
中的原始版本。
答案 1 :(得分:1)
Class1
来描述他们的关系时, Class2
会间接继承"is-a"
(请记住"is-a"
关系是可传递的)。
示例:red-apple
是一个apple
是一个fruit
是一个consumable
。在此示例中,red-apple
间接继承自fruit
和consumable
。 red-apple
直接继承自apple
(仅使用了一个is-a
转换)
答案 2 :(得分:1)
有关间接继承课程的问题已经得到解答。所以我添加方法。
我认为重要的是类接口(可用方法的签名,而不是接口的java机制)和类行为之间的区别 - 可用方法的实现。在关于方法的问题中,您可以说类间接继承方法,无论它们是否被中间类覆盖,并且没有任何其他细节,这意味着继承接口。要将短语的上下文设置为行为,意味着必须明确声明方法X的实现取自类Y。