メソッドをオーバーライドする際、throws句に宣言されていた例外は減らすことが出来る。
減らした場合、親メソッドで宣言されていた例外は暗黙で宣言された扱いで引き継がれる。
と思っていたのだけれど、間違いっぽい(汗)
正解は、その例外は発生しない(という宣言)になる。
つまり、オーバーライドしたメソッド内からthrowすることが出来なくなるし、
そのメソッドを呼び出す側はtry~catchを書く必要が無くなる!
try~catchの必要性も、実行時のインスタンスのクラスやその親クラスにthrowsがあるかどうかは関係なくて、コンパイル時に使用されているクラス(変数のクラスやインターフェース)にthrowsがあるかどうかで決まる。
Vectorクラスのclone()を使ってみたらCloneNotSupportedExceptionのtry~catchが不要だったので、あれ?と思って調べてみたら、そういう事だった…。