package variables_methods.snippets;
/**
*
* @author stephen.liu
*/
abstract class A {
abstract void a1();
void a2(){}
}
class B extends A {
void a1(){}
void a2(){}
}
class C extends B {void c1(){}}
public class Polymorphic {
public static void main(String[] args) {
A x = new B(); C y = new C();A z = new C();
}
}
what are four valid examples of polymorphic method calls?(Choose four.)
A.x.a2();
B.z.a2();
C.z.c1();
D.z.a1();
E.y.c1();
F.x.a1();
彻底征服SCJP 6 认证这本课本答案是ABDF,
但是我用netbeans撰写的时候是E.y.c1();是对的,F.x.a1()是错的!
而且它的解释是这样。以程式方面来看y.c1()是正确的呼叫方式,型别C类别的y变数只像C类别物件实体,呼叫C类别所实作的c1()函式,这是非常正确的呼叫作法,但选项E为何是错的呢?因为此选项是错再没有用到多型的用法。这选项是个陷阱。
如果说没用到多型用法而错,那也应该是ABD是对的而已吧!因为F语法本身就有错!
所以烦请高手代为解惑,谢谢!
今天(11/11)看到有人回覆说没问题,我就再确认一次,真是诡异没问题了,看来我有眼花的毛病了!
FREE SCJP and SCWCD Dumps