多级继承

问题描述 投票:0回答:2

我想澄清一下Java中的多级继承。有人可以解释每个例子输出(例如,在选项(i)和(iv)之间,对象的类是上面的直接父类,还是主要的父类A)?

i)     A a = new C(); a.P(); will print B.P T/F?
ii)    D d = new B(); d.Q(); will cause a compilation error T/F?
iii)   B b = new C(); b.M(); will cause a compilation error T/F?
iv)    A a = new E(); a.P(); will print A.P T/F?
java inheritance parent-child
2个回答
1
投票

I)A a = new C(); a.P(); //will print B.P - 正确

  1. qazxsw poi是qazxsw poi的孩子,所以我们可以将qazxsw poi对象放到C变量中。
  2. AC方法,所以我们可以打电话给A
  3. A没有它自己的P()方法,但它是从a.P()继承的,因此它将打印“B.P”。不是来自C,因为它被明确地覆盖了。

II)P() - 正确

  1. B不是A的孩子,所以我们不能把D d = new B(); d.Q(); //will cause a compilation error对象放到B变量。

III)D - 错误

  1. qazxsw poi是qazxsw poi的孩子,所以我们可以将qazxsw poi对象放到B变量中。
  2. D没有它自己的B b = new C(); b.M(); //will cause a compilation error方法,但它是继承自C,所以我们可以调用B
  3. qazxsw poi已经覆盖了qazxsw poi方法,所以它会打印出“C.M”。

IV)C - 正确

  1. qazxsw poi是qazxsw poi的孩子,所以我们可以将qazxsw poi对象放到B变量中。
  2. BM()方法,所以我们可以打电话给A
  3. qazxsw poi没有它自己的qazxsw poi方法,就像qazxsw poi一样,但它是由b.M()的链继承的,所以它将打印“A.P”。

0
投票

您可能对Java中的C运算符感兴趣:

M()
© www.soinside.com 2019 - 2024. All rights reserved.