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

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



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

> interfaceの有用性がわからないときがあります。

文法的な理由として、
Javaは単一継承言語なので、任意のクラスにイベントリスナ機能
を取り付けるためには、interfaceである必要があります。

> interfaceの存在は多重継承の「一部実装」

多重継承の「一部実装」という見方は、一面を見ているだけだと思います。
「クラス継承」と「インタフェース実装」はかなり異なる概念です。

クラス継承は「is a」「具象化」を表現しますが、
インタフェース実装は「クラス外部との窓口の設置」「役割の付与」です。

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

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

-- 
/** 久野 浩 - Hiroshi Kuno */