[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: [jfriends] 『Java Report』?の記事




高橋です。
>こんにちは、岸田です。
>
>先週の読書会の時の時のお話で、気になってきたことがあるのでお聞きします。
>確か、高橋徹さんがおっしゃったことでは、『Java Report』の記事で、
>『interface の継承よりも abstract class の継承のほうがいい』?という
>ようなものがあったということですが、この内容がどのようなものだったか
>もう少し詳しく教えください。よろしくお願いします。
"Java Report 1999.6"です。会社に置いてきてしまっているので、ノートへ
メモしたことと記憶の範囲で書きます。

AbstractクラスとInterfaceの使い分けに関する記事です。Interfaceでは、
既に定義して使われている、あるInterfaceの定義にメソッドを追加した場合
このInterface定義を実装していたクラスは全部エラーとなってしまう。
#このエラーは、コンパイルエラーというより実行時エラーの意味だったと
#思いますが、詳しくは覚えてません。

例えば、java.awt.LayoutManagerインタフェースにメソッドを追加したかった
が、その場合LayoutManagerを実装しているクラスがエラーとなってしまうので
LayoutManager2という新しいインタフェースを定義した。
この問題は、Abstractクラスを使うことによって避けられる。あるときAbstract
クラスにメソッドを追加しても、Abstractクラスを継承していたクラスには
エラーとならない。
#これは本当かどうか未確認です。

多重継承の問題がないのであれば、InterfaceよりもAbstractクラスを使う方が
betterという結論を出していました。

この記事は、確か"Durable API"という連載のもので、安定したAPIを設計する
テーマに沿っています。今回は、一度定義したAPIを変更する場合、Interface
かAbstractクラスかどちらがよいかという話題です。




------
Toru Takahashi
torutk@xxxxxxxxxx
NIFTY: GHE00470
http://www.alles.or.jp/~torutk/