我想澄清一下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?发布于 2018-03-05 05:14:57
( I) A a = new C(); a.P(); //will print B.P -正确
C是A的子对象,因此我们可以将C对象放到A变量中。A有P()方法,所以我们可以调用a.P()。C没有自己的P()方法,但它是从B继承的,因此它将打印"B.P“。不是来自A,因为它被显式地高估了。(二) D d = new B(); d.Q(); //will cause a compilation error -正确
B不是D的子对象,因此不能将B对象放置到D变量中。(三) B b = new C(); b.M(); //will cause a compilation error -错
C是B的子对象,因此我们可以将C对象放到B变量中。B没有自己的M()方法,但它是从A继承的,所以我们可以调用b.M()。C覆盖了M()方法,因此它将打印"C.M“。(四) A a = new E(); a.P(); //will print A.P -正确
E是A的子对象,因此我们可以将E对象放到A变量中。A有P()方法,所以我们可以调用a.P()。E没有自己的P()方法,就像D一样,但是它是从A继承的,所以它会打印"A.P“。发布于 2018-03-05 04:59:39
您可能对Java中的instanceof操作符感兴趣:
System.out.println("Im a String" instanceof Object); // prints "True"https://stackoverflow.com/questions/49103658
复制相似问题