2009年2月11日 星期三

第71題

Given:
1. interface A{public void aMethod();}
2. interface B { public void bMethod(); }
3. interface C extends A, B { public void cMethod(); }
4. class D implements B {
5. public void bMethod(){}
6. }
7. class E extends D implements C {
8. public void aMethod(){}
9. public void bMethod(){}
10. public void cMethod(){}
11. }
What is the result?
A. Compilation fails because of an error in line 3.
B. Compilation fails because of an error in line 7.
C. Compilation fails because of an error in line 9.
D. If you define D e = new E(), then e.bMethod() invokes the version of bMethod() defined in Line 5.
E. If you define D e = (D)(new E()), then e.bMethod() invokes the version of bMethod() defined in Line 5.
F. If you define D e = (D)(new E()), then e.bMethod() invokes the version of bMethod() defined in Line 9.
答案:F
參考:7-9 多型

----------------------------------------------

D e = (D)(new E()) 實體類別是 E, 所以呼叫method時,是看實體類別的method.

沒有留言:

張貼留言