JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 關於cx310-065考題的答案
zhong4





發文: 21
積分: 0
於 2011-10-18 13:35 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這題的拿去編譯後,發現會編譯出錯,但我不了解為什麼編譯出錯,子類別不是會覆寫父類別的方法嗎?那如果這樣因該是不會拋出例外物件才對,為什麼會編譯不過?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A{
void foo()throws Exception{
throw new Exception();
}
}
class b extends A{
void foo(){
System.out.print("B");
}
}
public class Main {
    public static void main(String[] args)  {
        A a=new b();
        a.foo();
    }
}


reply to postreply to post
作者 Re:關於cx310-065考題的答案 [Re:zhong4]
water8641





發文: 31
積分: 0
於 2011-10-18 14:17 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
你的程式中,當第14行『 a.foo(); 』程式呼叫第2行『void foo()throws Exception』程式時,會將Exception拋回給到第14行原呼叫式,而第12行main方法沒有做例外處理,因此會造成編譯錯誤。

因此只要將main方加上 throws Exception 編譯與執行就會OK了~!
程式修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A{
    void foo()throws Exception{
        throw new Exception();
    }
}
class b extends A{
    void foo(){
        System.out.println("B");
    }
}
public class Main {
    public static void main(String[] args) throws Exception {
        A a=new b();
        a.foo();
    }
}


reply to postreply to post
作者 Re:關於cx310-065考題的答案 [Re:water8641]
zhong4





發文: 21
積分: 0
於 2011-10-18 14:36 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我有點不了解,為什麼呼叫的是父類別的方法,方法不是都會覆寫嗎,那為何還會呼叫父類別的方法?

reply to postreply to post
作者 Re:關於cx310-065考題的答案 [Re:zhong4]
LiaoLuke





發文: 106
積分: 0
於 2011-10-18 15:30 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
zhong4 wrote:
這題的拿去編譯後,發現會編譯出錯,但我不了解為什麼編譯出錯,子類別不是會覆寫父類別的方法嗎?那如果這樣因該是不會拋出例外物件才對,為什麼會編譯不過?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A{
  void foo()throws Exception{
      throw new Exception();
  }
}
class b extends A{
   void foo()throws Exception{
     System.out.print("B");
   }
}
public class Main {
    public static void main(String[] args)  {
        A a=new b();
        a.foo();
    }
}


"子類別不是會覆寫父類別的方法嗎?"
覆寫父類別的方法,並不是去改方法名稱

父類別的方法:void foo()throws Exception{
您改方法名稱
子類別的方法:void foo(){

覆寫父類別的方法
1
2
3
  void foo()throws Exception{
      覆寫邏輯,流程...
  }


LiaoLuke edited on 2011-10-18 15:33
reply to postreply to post
作者 Re:關於cx310-065考題的答案 [Re:zhong4]
water8641





發文: 31
積分: 0
於 2011-10-18 15:33 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請參考以下文章:
http://www.javaworld.com.tw/jute/post/view?bid=29&id=281858


reply to postreply to post
» JWorld@TW »  Java 新手區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8