up:: Programming
source:: GetComponentを使うときはインターフェースを使おう
インターフェース
抽象クラスをより突き詰めた概念。なんというか、メソッド付きのタグ機能って感じ。
まずはコード。
interface IFly
{
void fly();
}
class Bird : IFly
{
public void fly()
{
// 飛ぶ処理
}
}
- Interfaceで宣言
- 通常のクラスの横に:つけてInterface名を書く
- 処理が書いてあるメソッドは 実装できない
- abstract publicは いらない
(そもそも外部からの仲介役なためpublic以外のメソッドが作れない)
(内部ではインターフェースのインスタンスを作りそのメソッドを呼び出してる) - 多重継承可能
(class hoge1:hoge2, hoge3 といったことができるという意味)
機能上、メソッドは各々のクラス内で作りこむ必要があるので注意。
そして最も大事なのは、このインターフェース型の変数に継承したインスタンスが入れられること。 これ自体は普通の「親クラスに子クラスのインスタンスが入る」のと同じだが、インターフェースを継承したものに対しては、どんなものでも同じ対処が可能になるというのが強い。
ついでに一応。
インターフェースはあくまで補助であり、それが真にどのような概念なのか、は常にプログラマの頭の中にしかない。気を付ける。