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

[jfriends:00264] Re: イベントリスナなどでの interface



 〜 12月1日新しいビジネスが始まる!ビジネスも楽天、楽天ビジネス誕生 〜
         ●●●●●●●●●●●●●●●●●●●●●●●●●●●
         ● サービスリリース第一弾!ビジネスサービス商談市場 ●
         ●●●●●●●●●●●●●●●●●●●●●●●●●●●
〜〜〜〜〜 今すぐアクセス! http://business.rakuten.co.jp 〜〜〜〜〜
----------------------------------------------------------------------

In article <3A2D9160.68BA0380@xxxxxxxxxxxxxxxx>
Hiroshi Kuno wrote:
>> interfaceの有用性がわからないときがあります。
>
>文法的な理由として、
>Javaは単一継承言語なので、任意のクラスにイベントリスナ機能
>を取り付けるためには、interfaceである必要があります。

abstract classにしておけば任意のクラスに付けられることが無くてイベントリ
スナの独立性を高められたのにぃという主張もあります^^。
# 利便との天秤に負けた、とも:)

>> interfaceの存在は多重継承の「一部実装」
>
>多重継承の「一部実装」という見方は、一面を見ているだけだと思います。
>「クラス継承」と「インタフェース実装」はかなり異なる概念です。
>
>クラス継承は「is a」「具象化」を表現しますが、
>インタフェース実装は「クラス外部との窓口の設置」「役割の付与」です。

応答可能性の付与はそのとおりですが、継承は「is-a」ですが〜というのは私と
は違うようです。(interfaceの実装も「is-a」「具象化」を表現できると思って
るので)

>class 車 {}
>class バイク {}
>interface 信号無視 {}
>interface 交通取締り {}
>class 警官                    implements           交通取締り {}
>class パトカー extends 車     implements 信号無視, 交通取締り {}
>class 白バイ   extends バイク implements 信号無視, 交通取締り {}
>class 暴走族   extends バイク implements 信号無視 {}

intarface 車 {}
という設計も十分ありえますしね^^。

>また、インタフェースで定義されたメソッドの実装は、
>必ずしもimplements したクラスで行う必要はなく、
>そのクラスのスーパークラスで同一のシグネチャをもつメソッドがあれば
>それを実装とします。つまり必要な機能だけを拾い上げることができます。
>こういうことは多重継承ではやりません。

(違いを語る場合は)ここが重要なんですよね。「多重継承ではやりません」は
ちょっと"?"ですけど^^。


-- 
木下 信@イデア