class B {
void process()throws Exception{
System.out.println("hi sh");
}
}
class C extends B {
void process(){
System.out.println("hhhhhh");
}
public static void main(String args[]){
B a=new C();
try{
a.process();
}
catch(Exception e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
在调用process方法时,我们必须使用try catch块.但是,如果我只将C的对象存储在C的引用变量中,C a=new C()那么就不需要尝试catch块.
谁能告诉我原因?
编译器不能(通常)告诉变量a在运行时将具有哪种类型.因此,(总是)主罚安全路线,并要求你把try/ catch呼叫周围.
当你这样做
C a = new C();
Run Code Online (Sandbox Code Playgroud)
相反,编译器可以确保B.process()不会在运行时调用,这样你可以调用它,而不try/ catch.
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |