up:: Programming
source:: GetComponentを使うときはインターフェースを使おう

インターフェース

抽象クラスをより突き詰めた概念。なんというか、メソッド付きのタグ機能って感じ。
まずはコード。

interface IFly
{
    void fly();
}
 
class Bird : IFly
{
    public void fly()
    {
        // 飛ぶ処理
    }
}
  • Interfaceで宣言
  • 通常のクラスの横に:つけてInterface名を書く
  • 処理が書いてあるメソッドは 実装できない
  • abstract publicは いらない
    (そもそも外部からの仲介役なためpublic以外のメソッドが作れない)
    (内部ではインターフェースのインスタンスを作りそのメソッドを呼び出してる)
  • 多重継承可能
    (class hoge1:hoge2, hoge3 といったことができるという意味)

機能上、メソッドは各々のクラス内で作りこむ必要があるので注意。

そして最も大事なのは、このインターフェース型の変数に継承したインスタンスが入れられること。 これ自体は普通の「親クラスに子クラスのインスタンスが入る」のと同じだが、インターフェースを継承したものに対しては、どんなものでも同じ対処が可能になるというのが強い。

ついでに一応。
インターフェースはあくまで補助であり、それが真にどのような概念なのか、は常にプログラマの頭の中にしかない。気を付ける。