2 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
你對(duì)Java的類這個(gè)概念了解還不夠,Sneeze是Annoyance的子類,意味著Sneeze一定是Annoyance,所以參數(shù)類型為Annoyance的時(shí)候,傳遞進(jìn)去一個(gè)Sneeze實(shí)例并沒有什么問題,這個(gè)實(shí)例在被拋出的時(shí)候當(dāng)然會(huì)被捕獲。有一段類似的代碼你可以看看。
class Animal {
void talk(){
System.out.print("I'm Animal");
}
}
class Human extends Animal {
void talk(){
System.out.print("I'm Human");
}
}
class Main{
public static void main(String[] args) throws Exception {
bark(new Human());
}
static void bark(Animal a){
a.talk();
}
}
在上面的代碼中,為什么最后會(huì)打印I'm Human而不是I'm Animal

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
你
throw new Sneeze();
為何不能被?
} catch (Sneeze s) { System.out.println("Caught Sneeze"); return; }
添加回答
舉報(bào)