看板 java 關於我們 聯絡資訊
程式如下 import java.io.*; 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");} } } 編譯會出錯,訊息為 B.java:11: process() in B cannot override process() in A; overridden method does not throw java.io.IOException 這應該是書上說的,override method throws 的Exception 要為父類別 method throws 的Exception 的子類別或不寫。 (不確定是不是這個原因) 我的問題是,那為什麼我把 所有的IOException都改成 RuntimeException就過了呢? RuntimeException不需要遵守這個規定嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.220.48
rofellosx:因為叫RuntimeException...? 03/24 22:17
snowlike:http://java.sun.com/javase/6/docs/api/ 03/24 22:17
tkcn:Exception 有兩種,checked & unchecked,Run..Exc..屬於後者 03/24 22:48
AmosYang:本板 #1ApLD3za #1ApgIPUI 有人跟某人正好在討論這個… 03/25 06:35
tkcn:剛剛跑去笨板找,結果沒找到,想想不對才發現我看錯字了 = = 03/25 09:20
AmosYang: LOL XD 03/25 11:23