p.255 インターフェイス ・元の意味は「接合部/面」で「異なる要素を関連付ける仕掛け」 ・C#では、継承関係にないクラスであっても、関連付けられる仕組み ・例えば、空中シューティングゲームで、飛んでいるドラゴンとF16戦闘機を「飛べるもの」インターフェイスでまとめて扱うことができる ・インターフェイスは文法では抽象クラスの拡張形式で「抽象メンバのみをもった参照型」となる ・書式: interface インターフェイス名 { 抽象メンバ … } ・インターフェイスに記述できる抽象メンバとしては、抽象メソッド、抽象プロパティ、抽象インデクサがある ※ (Javaとは異なり)データメンバは記述できない ・例: interface Flyable { string HowToFly(); } //「飛べるもの」インターフェイスに飛び方を返すメソッドがある ・なお、インターフェイスの中に記述した抽象メンバは「abstract」は不要 ・インターフェイスの中の抽象メソッドの書式: 戻り値型 メソッド名(引数型 引数,…); ・インターフェイスの中の抽象プロパティの書式: データ型 プロパティ名 { get; set; } ・インターフェイスの中の抽象インデクサの書式: データ型 this[インデックス型 インデックス名 { get; set; } p.256 インターフェイスの実装 ・クラスの継承と同じ形式で、インターフェイスの実装が可能 ・なお、クラスの継承とことなり、インターフェイスの実装は複数行って良い ・書式: class クラス名 : インターフェイス名,… {…} ・例: class F16 : Flyable {…} //F16戦闘機は「飛べるもの」 ・例: class Dragon : Flyable, Swimable {…} //ドラゴンは「飛べるもの」で「泳げるもの」 ・インターフェイスを実装したクラスでは、インターフェイスにある抽象メンバをオーバーライドする必要がある ・しかし、これは継承におけるオーバーライドとは区別され、override指定は不要で、通常、publicにする ・例: class F16 : Flyable { public string HowToFly() { return "エンジンで";} } //F16戦闘機は「飛べるもの」 作成例 //p.257 interface01.cs using System; interface IMyInterface { //インターフェイスの定義 void show(string str); //抽象メソッド int xprop { get; set; } //抽象プロパティ int this[int i] { get;…
Read the full article