2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

インターフェースについて

Last updated at Posted at 2021-01-21

インターフェースとは

 具体的な処理の内容は書かず、クラスが実装すべき規約(そのメソッドで何を呼び出すことが出来るのか)を定めるもの。つまり、クラスでどんなメソッドを実装する必要があるかという構造だけを定めた、論理的な存在。

存在価値は?

・「このインターフェースを使うときはこのメソッドの中身を必ず作ってね!」とか、「そのメソッドには、必ずこんな引数を渡してね!」などとメソッドの実装を強制できる。
・複数のクラスが同じインターフェースについて、それぞれ異なる処理内容を実装することが出来る。(ポリモーフィズム)

使用例

interfaceの定義例

public interface ISeriees {
    int GetNext();
      void Reset();
      void SetStart(int x);
}

見てわかる通り、どのメソッドにも処理は実装されていない。その代わりに、インターフェースを実装するクラスでは、そのインターフェースに含まれるすべてのメソッドを実装する必要がある。

interfaceを実装するクラスの例

class ByTwos : ISeries {
    int start;
    int val;

    public ByTwos()
    {
        start = 0;
        val = 0;
    }

    public int GetNext()
    {
        val += 2;
        return  val;
    }

    public void Reset()
    {
        start = 0;
        val = 0;
    }

    public void SetStart(int x)
    {
        start = x;
        val = x;
    }
}

定義したインターフェースを1つ以上のクラスに実装することができる。注意したいのは、継承と混同しないこと。ByTwosクラスはISeriesクラスを継承しているのではなく、ISeriesインターフェースを実装していると言える。また、ByTwosクラスが3つすべてのメソッドを実装していることからも分かる通り、インターフェースで定義したすべてのメンバーを実装する必要がある。いくつかのメソッドだけを使うといったことはできない。これは使う人それぞれがバラバラな使い方をしてしまうのを防ぐためだ。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?