http://blogs.wankuma.com/rti/archive/2007/08/31/92918.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13
http://blogs.wankuma.com/rti/archive/2007/08/28/92305.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12
http://blogs.wankuma.com/rti/archive/2007/08/27/92095.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11
http://blogs.wankuma.com/rti/archive/2007/08/20/91083.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門10
http://blogs.wankuma.com/rti/archive/2007/08/14/90238.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門9
http://blogs.wankuma.com/rti/archive/2007/08/10/89801.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門8
http://blogs.wankuma.com/rti/archive/2007/08/08/89397.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門7
http://blogs.wankuma.com/rti/archive/2007/08/07/89226.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門6
http://blogs.wankuma.com/rti/archive/2007/08/02/88399.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門5
http://blogs.wankuma.com/rti/archive/2007/07/31/87955.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門4
http://blogs.wankuma.com/rti/archive/2007/07/30/87742.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門3
http://blogs.wankuma.com/rti/archive/2007/07/26/87105.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門2
http://blogs.wankuma.com/rti/archive/2007/07/25/86988.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門1
の続きです。
どこからフォローすれば良いのかわからないので、先頭から順に行ってます。
今回は
インターフェイス
というテーマです。
毎度おなじみのR・田中一郎クラスですが、わんくま同盟に限らないでR・田中一郎のプロフィールとしても流用できます。
しかし、会員番号は、わんくま同盟独自のものです。
このような場合は、単純に一つのクラスを継承するという考え方ではなく、いくつかのメンバをグループ化したパターンを作ってあげた方が良さそうです。
以下の C# のコードを見て下さい。
interface Iプロフィール
{
string 名前 { get; }
string 年齢 { get; }
string 職業 { get; }
string 印象 { get; }
void 自己紹介();
}
interface Iわんくま同盟
{
string 会員番号 { get; }
}
class R.田中一郎 : Iプロフィール, Iわんくま同盟
{
public string 会員番号 { get { return "34"; }}
public string 名前 { get { return "R・田中一郎"; }}
public string 年齢 { get { return "18"; }}
public string 職業 { get { return "IT関係"; }}
public string 印象 { get { return "素敵だし爽やか"; }}
public void 自己紹介(){}
}
前回の抽象クラスの記述に似ていますが、インターフェイスとしてメンバを定義しています。
上記のサンプルを見ると、抽象クラスの abstract 修飾子をつけたメンバの定義と同じことが interface によって行えている点と、継承したクラスで override 修飾子を記述せずに実装を記述できているだけのように思えます。
また、R・田中一郎クラスが、2つのインターフェイスを継承していることもわかります。
では、インターフェイスとクラス(抽象クラスも含む)は何が違うのでしょうか?
クラスは型と実装を記述できると共にオブジェクトも生成できますが、インターフェイスは型を定義するだけです。
しかし、上記の例のように、クラスは一つしか継承できないことに対して、インターフェイスは複数継承できます。
インターフェイスは型だけを定義するものであるため、当然継承したクラス側では、全てのメンバを実装しなければなりません。
上記のサンプルでは、インターフェイスで定義したメンバに対する全ての実装をR・田中一郎クラスが持っていることが確認できます。
また、以下のように1つのクラスと複数のインターフェイスをまとめて継承することもできます。
class R.田中一郎 : アンドロイド, Iプロフィール, Iわんくま同盟
このようにインターフェイスを継承したクラスによって生成されたオブジェクトは、以下のようにインターフェイスの型を持つ変数に代入することができます。
R・田中一郎 r = new R・田中一郎();
アンドロイド a = r;
Iプロフィール p = r;
Iわんくま同盟 w = r;
以上で「R流、一瞬でわかる.NETオブジェクト指向プログラミング入門」は全て終了です。
どこが一瞬なんだという意見が多数ありましたが、まあ、振り返ってみれば一瞬の出来事でしたね。
恐らく、僕の自己紹介は大量にしているので、僕の名前だけは覚えてもらえたことは間違いないでしょう。
それでは最後まで、ご清聴をありがとうございました。