SCJP題庫第141題


Given:
11. class A{
12.   public void process(){System.out.print("A, ");}
13.   class B extends A{
14.   public void process() throws IOException{
15.     super.process();
16.     System.out.print("B, ");
17.     throw new IOException(),
18.   }
19. public static void main(String[] args){
20.   try{new B().process();}
21.   catch(IOException e){System.out.println("Exception");}
22. }
What is the result?
 
 
A. Exception
B. A, B, Exception
C. Compilation fails because of an error in line 20.
D. Compilation fails because of an error in line 14.
E. A NullPointerException is thrown at runtime.
 
Ans: D
 
解說:
overriding方法宣告拋出的例外必須是父類別方法中宣告拋出的例外本身或其子類別例外,詳細請參考SL-275261
子類別的overriding方法不能拋出父類別overridden方法所沒有宣告拋出的例外或其例外父類別,
此題類別Aprocess方法沒有宣告拋出任何類別,因此子類別Bprocess方法不能宣告拋出IOException

Comments

Popular posts from this blog

Android+Google Map API v3 Geocoding(地址轉經緯度度