講義メモ 第10章 インターフェイス

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 {  //F16戦闘機は「飛べるもの」
  public string HowToFly() { 
   return "エンジンで";
  } 
 }
・例: 
 class Dragon : Flyable, Swimable { //ドラゴンは「飛べるもの」で「泳げるもの」
  public string HowToFly() { 
   return "自分の翼で";
  } 
  public string HowToSwim() { 
   return "自分の尾で";
  } 
 }

アレンジ演習:p.257 interface01.cs

・IMyInterfaceインターフェイスを実装するYourClassを追加し、MainメソッドでMyClassと同様に扱えることを試そう

提出:アレンジ演習:p.257 interface01.cs

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です