|
■No2401 (みかでこ さん) に返信 > 遅くなりましたが、回答ありがとうございました。 > ちょっと言い方が悪かったようですいません、インタ−フェイスを実装するクラスではなくて、定義してある方のクラスという意味で > インタ−フェイスクラスという言い方をしてしまいました。
インタフェースクラスという言い方と言語が不明なのと説明されている内容から 私も最初に読んだときは混乱しました。 Interfaceを指していると考えると実装も書けているという点が矛盾していると思いましたので。 > 一般的にインタ−フェイスを使う場合、インタ−フェイスのためのクラスではVB.NET言うとMustInheritを付けて作成して定義以外は書 > かないという理解でよろしいでしょうか。
これを読んで理由がたぶんわかりました。 みかでこさんのおっしゃっているのはインタフェースではなく、抽象クラスではないでしょうか。
・インタフェースには実装は含めることはできません。 ・抽象クラスは抽象メソッドだけでなく実装のあるメソッドなども書けます。
インタフェースと抽象クラスの機能面から見た違いは以上の通りですが、 使い分けはそういった機能面から行うのではなく、オブジェクト指向の観点から、
・親になるクラスなのか → 抽象クラス(抽象でないといけないということはありません)) ・あるオブジェクトが持つべき役割、性質であるのか → インタフェース
という視点で考えるとよいと思います。
私は抽象クラスはほとんど使ってませんが、デザインパターンの Template Method (テンプレートメソッド) パターンあたりで調べてみると 実用例を見つけられるかと思います。
|