SCJP 1.6版考題 199

出自 陳富國維基館
於 2013年3月30日 (六) 00:13 由 Ikk (對話 | 貢獻) 所做的修訂 (新頁面: Given: 10. interface A{void x();} 11. class B implements A{public void x(){} public void y(){}} 12. class C extends B{public void x(){}} And: 20. java.util.List<A> list = new jav...)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
前往: 導覽搜尋
Given:
10. interface A{void x();}
11. class B implements A{public void x(){} public void y(){}}
12. class C extends B{public void x(){}}
And:
20. java.util.List<A> list = new java.util.ArrayList<A>();
21. list.add(new B());
22. list.add(new C());
23. for(A a : list){
24.   a.x();
25.   a.y();
26. }

What is the result?

 A. The code runs with no output.
 B. An exception is thrown at runtime.
 C. Compilation fails because of an error in line 20.
 D. Compilation fails because of an error in line 21.
 E. Compilation fails because of an error in line 23.
 F. Compilation fails because of an error in line 25.


解答


Ans: F

解說:

25行出錯是因為取出來的a是A型態,A型態沒有y方法,無法通過編譯器檢查,改法如下:
interface A{void x(); void y(); }
  class B implements A{public void x(){} public void y(){}}
  class C extends B{public void x(){}}
class test {
   public static void main(String[] args){
      java.util.List<A> list = new java.util.ArrayList<A>();
      list.add(new B());
      list.add(new C());  
      for(A a : list){
    a.x();
  a.y();
    }
  }
}