首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多级遗传

多级遗传
EN

Stack Overflow用户
提问于 2018-03-05 04:51:31
回答 2查看 257关注 0票数 0

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

代码语言:javascript
复制
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?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-05 05:14:57

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

  1. CA的子对象,因此我们可以将C对象放到A变量中。
  2. AP()方法,所以我们可以调用a.P()
  3. C没有自己的P()方法,但它是从B继承的,因此它将打印"B.P“。不是来自A,因为它被显式地高估了。

(二) D d = new B(); d.Q(); //will cause a compilation error -正确

  1. B不是D的子对象,因此不能将B对象放置到D变量中。

(三) B b = new C(); b.M(); //will cause a compilation error -错

  1. CB的子对象,因此我们可以将C对象放到B变量中。
  2. B没有自己的M()方法,但它是从A继承的,所以我们可以调用b.M()
  3. C覆盖了M()方法,因此它将打印"C.M“。

(四) A a = new E(); a.P(); //will print A.P -正确

  1. EA的子对象,因此我们可以将E对象放到A变量中。
  2. AP()方法,所以我们可以调用a.P()
  3. E没有自己的P()方法,就像D一样,但是它是从A继承的,所以它会打印"A.P“。
票数 1
EN

Stack Overflow用户

发布于 2018-03-05 04:59:39

您可能对Java中的instanceof操作符感兴趣:

代码语言:javascript
复制
System.out.println("Im a String" instanceof Object);  // prints "True"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49103658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档