C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のインターフェースとは?仕組みと実装方法をわかりやすく解説

インターフェースは、クラスや構造体が実装すべき「契約(コントラクト)」を定義する仕組みです。インターフェースにはメソッド、プロパティ、イベント、インデクサーを含めることができます。

インターフェースはクラスに似ていますが、データそのものは保持せず、「何ができるか」という振る舞いだけを指定する点が異なります。より正確に言えば、インターフェースを実装したクラスがどんな操作を提供できるかを宣言するものです。

インターフェースの基本的なルール

1つのクラスは、複数のインターフェースを実装できます。インターフェースのメンバーを実装するには、クラス側に同じ名前・同じシグネチャを持つpublicなメンバーを定義する必要があります。

例として、System.Collections名前空間に定義されているIComparerインターフェースがあります。これは2つのオブジェクトを比較するメソッドの契約を定義しており、Carクラスなどがこれを実装することで比較機能を持たせられます。

実装例:IDriverインターフェース

public interface IDriver{
    void Drive();
}

public class Car : IDriver{
    public string Name { get; set; }
    public int Speed { get; set; }

    public void Drive(){
        Console.WriteLine($"{Name}: {Speed}");
    }
}

インターフェースメンバーの特徴

  • インターフェースのすべてのメンバーは暗黙的に抽象的であり、実装の詳細を持ちません。
  • すべてのメンバーは暗黙的にpublicです。アクセス修飾子を付けることはできません。
  • インターフェースを実装するクラスは、対応するpublicメソッドを必ず提供しなければなりません。

インターフェースの継承

インターフェースは他のインターフェースを継承(拡張)することもできます。以下のように、ISingerはIPerformerの契約を引き継ぎつつ、独自のメンバーを追加しています。

public interface IPerformer { void Perform(); }

public interface ISinger : IPerformer{
    void Sing();
}

多重継承の代替手段として

C#ではC++のようなクラスの多重継承が許されていませんが、インターフェースを使えば複数のソースから振る舞いを1つのクラスに組み込めます。つまり、インターフェースはC#において多重継承を実現するための有力な手段となります。

注意点:柔軟性のトレードオフ

一方で、インターフェースには欠点もあります。APIを公開する目的で使う場合、クラスよりも柔軟性が低いという点です。インターフェースの契約を変更すると、そのインターフェースを実装しているすべてのクラスが壊れ、対応する修正が必要になります。このため、公開API向けの設計では契約の変更コストを考慮することが重要です。

完全なサンプルコード

using System;

class Program{
    static void Main(){
        var carOne = new Car { Name = "Honda", Speed = 100 };
        var carTwo = new Car { Name = "Toyota", Speed = 70 };

        carOne.Drive();
        carTwo.Drive();
    }
}

public interface IDriver{
    void Drive();
}

public class Car : IDriver{
    public string Name { get; set; }
    public int Speed { get; set; }

    public void Drive(){
        Console.WriteLine($"{Name}: {Speed}");
    }
}

出力結果

Honda: 100
Toyota: 70
  1. YouTubeチャンネルメンバーシップとは?仕組み・料金・特典・加入方法を徹底解説

    YouTubeの「チャンネルメンバーシップ」は、ファンがお気に入りのYouTubeチャンネルを毎月の自動的な寄付を通じて支援できる機能です。メンバーシップによる安定した収入はYouTuberの経済的負担を軽減し、動画制作に専念できる環境づくりを後押しします。また、メンバーになると、メンバー限定の投稿へのアクセスや、ライブチャットで使える専用絵文字など、さまざまな特典を受け取ることができます。なお、メンバーシップは「チャンネル登録」とは別物です。チャンネル登録はTwitterやInstagramのフォローのように、登録したチャンネルの新しい動画が自動的にフィードへ表示される仕組みです。チャンネル

  2. データスクレイピングの仕組みを徹底解説!自動化の基本と始め方

    この記事を読んでいるということは、データスクレイピングのメリットについてすでに耳にしたことがあるかもしれません。自動化された技術を活用すれば、面倒な手作業なしに大量のデータを収集できる――そんな話です。では、データスクレイピングは実際にどのように機能するのでしょうか?難易度は高いのか、それとも誰でも習得できるのでしょうか?純粋な好奇心から知りたい方もいれば、自分のビジネスや副業に活用できるかどうか検討している方もいるでしょう。いずれにしても、この記事を読み終える頃には、データスクレイピングの概要、スクレイピングプロセスの実際の仕組み、そして始め方まで、しっかりと理解できるようになっています。そ