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