RE: むーん

言いたいことがやっとわかった。ありがとうございます。

void add( String a ){ 処理系内部処理 }
というメソッドがある場合、 Stringが継承可能だったり、interfaceだったりすると、a がなんだかわからなくなって大変だということ。

http://nazakki.blogspot.com/2009/03/blog-post_9007.html

java はサブタイプ関係を含む型システムなのでこの点は問題ない。直感的に言うならば「変数 a には少なくとも String として扱ってしまって問題の無いオブジェクトが格納される」ということで問題は無い。変数 a の型は String 型であることは正しいから。
実行時に実際に何クラスのインスタンスがやってくるかはわからないが、静的には a は String 型である。これが、java は静的型付けと実行時の型検査を両方行っているといわれる所以です。