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

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




岸田です。
高橋徹さん、お手数かけました。ありがとうございました。

Toru Takahashi wrote:
> >先週の読書会の時の時のお話で、気になってきたことがあるのでお聞きします。
> >確か、高橋徹さんがおっしゃったことでは、『Java Report』の記事で、
> >『interface の継承よりも abstract class の継承のほうがいい』?という
> >ようなものがあったということですが、この内容がどのようなものだったか
> >もう少し詳しく教えください。よろしくお願いします。
> "Java Report 1999.6"です。会社に置いてきてしまっているので、ノートへ
> メモしたことと記憶の範囲で書きます。
> 
> AbstractクラスとInterfaceの使い分けに関する記事です。Interfaceでは、
> 既に定義して使われている、あるInterfaceの定義にメソッドを追加した場合
> このInterface定義を実装していたクラスは全部エラーとなってしまう。
> #このエラーは、コンパイルエラーというより実行時エラーの意味だったと
> #思いますが、詳しくは覚えてません。
>
実行時エラーのような気がします。

> 例えば、java.awt.LayoutManagerインタフェースにメソッドを追加したかった
> が、その場合LayoutManagerを実装しているクラスがエラーとなってしまうので
> LayoutManager2という新しいインタフェースを定義した。
> この問題は、Abstractクラスを使うことによって避けられる。あるときAbstract
> クラスにメソッドを追加しても、Abstractクラスを継承していたクラスには
> エラーとならない。
> #これは本当かどうか未確認です。
>
追加したメソッドを Abstract にしないで空のメソッドでも書いておけばいい
ということなのかもしれませんね。
 
> 多重継承の問題がないのであれば、InterfaceよりもAbstractクラスを使う方が
> betterという結論を出していました。
>
なんとなく納得してしまうのですが、これは、たぶんコードさんは反対する
お話かもと思いました。
 
> この記事は、確か"Durable API"という連載のもので、安定したAPIを設計する
> テーマに沿っています。今回は、一度定義したAPIを変更する場合、Interface
> かAbstractクラスかどちらがよいかという話題です。
> 
この前提が重要なのですね。


どうも、ありがとうございました。

岸田ゆき枝