次の関数を持つ抽象クラスがある場合-
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();
}
私はいくつかのテストを行いましたが、何も壊れていないようですが、A ではなく B の foo が呼び出された理由がわかりません