黑马程序员技术交流社区
标题:
异常 子类复写父类异常方法
[打印本页]
作者:
余善航
时间:
2013-1-20 17:19
标题:
异常 子类复写父类异常方法
父类的方法a上声明了异常,子类复写该方法a没有抛出异常
,那么创建个子类对象, 子类对象调用该方法a ,需要处理异常吗? 为什么啊
作者:
柴乔军
时间:
2013-1-20 17:33
本帖最后由 柴乔军 于 2013-1-20 17:37 编辑
class MyException extends Exception {
}
class A {
public void a() throws MyException {
throw new MyException();
}
}
class B extends A {
public void a() {
System.out.println("没有抛出异常");
}
}
public class Test {
public static void main(String[] args) {
A a = new B();
try {
a.a();
} catch (MyException e) {
//必须捕获
System.out.println("执行了A中的方法");
}
B b = new B();
b.a(); //这里不需要捕获
}
}
复制代码
结果:没有抛出异常
没有抛出异常
两次调用,执行的都是 B类中重写后的方法,这里用a.a()调用要catch的原因,应该是编译器此时并不知道B类中是否重写了该方法,
如果没有重写则需要执行A中的方法,所以要求catch,当直接声明1个B对象时,就不需要catch了,个人理解
作者:
柴乔军
时间:
2013-1-20 18:36
上面的代码好像有些问题。。。。B中的方法和A中的方法不是完全一样,但是加了@Override,编译器也没有报错。。这样不知道到底算不算重写了。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2