多级继承
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多级继承相关的知识,希望对你有一定的参考价值。
我想澄清一下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?
答案
I)A a = new C(); a.P(); //will print B.P
- 正确
- qazxsw poi是qazxsw poi的孩子,所以我们可以将qazxsw poi对象放到
C
变量中。 A
有C
方法,所以我们可以打电话给A
。A
没有它自己的P()
方法,但它是从a.P()
继承的,因此它将打印“B.P”。不是来自C
,因为它被明确地覆盖了。
II)P()
- 正确
B
不是A
的孩子,所以我们不能把D d = new B(); d.Q(); //will cause a compilation error
对象放到B
变量。
III)D
- 错误
- qazxsw poi是qazxsw poi的孩子,所以我们可以将qazxsw poi对象放到
B
变量中。 D
没有它自己的B b = new C(); b.M(); //will cause a compilation error
方法,但它是继承自C
,所以我们可以调用B
。- qazxsw poi已经覆盖了qazxsw poi方法,所以它会打印出“C.M”。
IV)C
- 正确
- qazxsw poi是qazxsw poi的孩子,所以我们可以将qazxsw poi对象放到
B
变量中。 B
有M()
方法,所以我们可以打电话给A
。- qazxsw poi没有它自己的qazxsw poi方法,就像qazxsw poi一样,但它是由
b.M()
的链继承的,所以它将打印“A.P”。
另一答案
您可能对Java中的C
运算符感兴趣:
M()
以上是关于多级继承的主要内容,如果未能解决你的问题,请参考以下文章