[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 */