【发布时间】:2013-06-11 20:22:02
【问题描述】:
如果我有一个具有以下功能的抽象类 -
abstract class A{
void foo(String s) throws Exception{
throw new Exception("exception!");
}
}
然后是另一个扩展抽象类并实现自己版本的 foo 的类 -
class B extends A{
void foo(String s){
//do stuff that does *not* throw an exception
}
}
这会产生问题吗?具体在以下测试用例中 -
Collection<A> col = new Collection<A>();
B b = new B();
col.add(b);
for(A a : col){
a.foo();
}
我做了一些测试,似乎没有任何问题,但我不明白为什么调用 B 的 foo 而不是 A 的
【问题讨论】:
-
有了封装就不需要知道哪个类实现了方法。
标签: java exception abstract throw