[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: 『Java Report』?の記事
前橋です。
遠藤さんの読書会の記事を読んで、思い出したのでちょっとだけ。
読書会にはちょっと参加できそうにないですし。
# 件の Java Reportの記事は、まだ読んでません。(^^;
岸田さん:
>> AbstractクラスとInterfaceの使い分けに関する記事です。Interfaceでは、
>> 既に定義して使われている、あるInterfaceの定義にメソッドを追加した場合
>> このInterface定義を実装していたクラスは全部エラーとなってしまう。
>> #このエラーは、コンパイルエラーというより実行時エラーの意味だったと
>> #思いますが、詳しくは覚えてません。
>>
>実行時エラーのような気がします。
ええと、この場合、安定した「API」を設計する話ですから、クラ
スライブラリをクラスファイルで提供するとして、それを使用する
APにどう影響を与えるか、ということですよね。
「コンパイル時エラー」以前に、そもそもコンパイルしないことが
前提なんじゃないかと思ったんですけど...
# 完璧に勘違いしてますか? 私。
コンパイルするのなら、implementsしていながら全メソッドを実装
していないクラスは、コンパイルエラーになると思うのですけれど。
実行時エラーだとしたら、ロード・リンク時にはねてくれるのが親
切だと思いますが...
>> この問題は、Abstractクラスを使うことによって避けられる。あるときAbstract
>> クラスにメソッドを追加しても、Abstractクラスを継承していたクラスには
>> エラーとならない。
>> #これは本当かどうか未確認です。
>>
>追加したメソッドを Abstract にしないで空のメソッドでも書いておけばいい
>ということなのかもしれませんね。
でしょうね。
>> 多重継承の問題がないのであれば、InterfaceよりもAbstractクラスを使う方が
>> betterという結論を出していました。
>>
>なんとなく納得してしまうのですが、これは、たぶんコードさんは反対する
>お話かもと思いました。
interface も abstractクラスも使わず、Objectで受けて、メソッ
ドの名前だけ決めて、リフレクション使って無理矢理呼び出す...
これなら、その名前のメソッドがなければ何もしないようにすれば
いいし、名前が衝突しない限り、多重継承の問題も発生しない。完璧!!
...冗談ですよ。もちろん :-)
私はやっぱり interfaceの方が正しいような気がします。
------------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------