[問題] 關於super的用法

看板java作者 (www)時間14年前 (2011/06/12 19:06), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
各位好: 請問一下,以下程式碼的結果 class A{ public void process(){ System.out.print("A, "); } } class B extends A{ public void process() throws IOException{ super.process(); System.out.print("B, "); throw new IOException(); } } public static void main(String[] args){ try{ new B().process(); }catch(IOException e){System.out.println("Exception");} } 答案是compilaion fails 解答說是class B的super.process();出錯 但是B不是繼承A嗎?怎麼不能用super取到A的方法呢? 謝謝您的閱讀 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.225.103

06/12 19:09, , 1F
問題是出在 B.process() 不能丟出 A.process() 沒有的例外吧
06/12 19:09, 1F

06/12 22:41, , 2F
所以是因為父類別A沒有丟例外,所子類別B不能丟例外嗎?
06/12 22:41, 2F

06/13 10:53, , 3F
應該是說這樣寫的話B.process就變成新函式 不算複寫
06/13 10:53, 3F

06/13 10:55, , 4F
所以父類別就找不到這樣一個可以擲出例外的process使用
06/13 10:55, 4F

06/13 16:52, , 5F
謝謝各位的解惑
06/13 16:52, 5F
文章代碼(AID): #1Dz9t7pL (java)