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

C#におけるインターフェースの暗黙的な実装とは?基本的な仕組みと使用すべき場面を徹底解説

はじめに:C#のインターフェース実装の2つの方式

C#では、インターフェース(interface)のメンバーを実装する際に、「明示的な実装」と「暗黙的な実装」という2つの方法を選択できます。それぞれに特徴があり、状況に応じて使い分けることが重要です。

本記事では、そのうちの「暗黙的な実装」について、基本的な仕組み・メリット・注意点をわかりやすく解説します。

暗黙的な実装の特徴

暗黙的な実装では、メンバー名の前にインターフェース名を記述しません。代わりに、コンパイラが自動的に「どのインターフェースのメンバーを実装しているのか」を推論してくれます。

この実装方式で定義されたメンバーはpublicとして扱われ、クラスのインスタンスに対して通常のメソッドと同じように直接アクセスできる点が大きな特徴です。つまり、オブジェクトを具象クラス型のままでも、インターフェース型にキャストしても、どちらの形でもメンバーを呼び出せます。

メソッドの呼び出し方

暗黙的に実装されたメソッドの呼び出し方は、一般的なメソッドと何ら変わりありません。クラスのオブジェクトを生成し、通常どおりメソッドを呼び出すだけで動作します。

暗黙的な実装が使えないケース

ただし、暗黙的な実装には1つの制約があります。複数のインターフェースで同じシグネチャ(同じ名前・引数)のメソッドが宣言されている場合は、暗黙的な実装を使用できません。このような場面では、明示的な実装を使ってインターフェースごとにメンバーを区別する必要があります。

サンプルコード

以下は、ICarとIBikeという2つのインターフェースを、ShowRoomクラスが暗黙的に実装した例です。

interface ICar {
    void displayCar();
}
interface IBike {
    void displayBike();
}
class ShowRoom : ICar, IBike {
    public void displayCar() {
        throw new NotImplementedException();
    }
    public void displayBike() {
        throw new NotImplementedException();
    }
}
class Program {
    static void Main() {
        ICar car = new ShowRoom();
        IBike bike = new ShowRoom();
        Console.ReadKey();
    }
}

コードのポイント

  • ShowRoomクラスは、ICarとIBikeの両方のメソッドをpublic修飾子を付けて暗黙的に実装しています。
  • Mainメソッド内では、同一のShowRoomインスタンスをICar型およびIBike型として扱っています。
  • 各インターフェースのメソッド名が異なるため、暗黙的な実装で問題なく動作します。

まとめ

暗黙的な実装は、コードがシンプルになり、クラス型・インターフェース型のどちらからでもメンバーにアクセスできる便利な方式です。ただし、複数のインターフェース間でメソッド名が衝突する場合には使えないため、その際は明示的な実装を選択しましょう。両者の違いを理解しておくことで、より設計意図に沿ったC#プログラミングが可能になります。

  1. Gmailの自動進行(Auto-advance)機能とは?設定方法と使い方を解説

    毎日大量のメールが届くGmailの受信箱。不要なメールやニュースレターを一件ずつ削除していくのは、非常に手間がかかりストレスを感じる作業です。 さらにGmailでは、メールを削除またはアーカイブすると自動的に受信箱の一覧画面に戻ってしまい、次のメールを処理するにはまた最初から操作をやり直す必要があります。1日に何百通ものメールを受け取る人にとって、これは大きな負担となるでしょう。そんな悩みを解決してくれるのが「自動進行(Auto-advance)」機能です。 自動進行機能とは? Gmailの自動進行機能を有効にすると、メールを削除・アーカイブ・ミュートした際に、受信箱の一覧に戻ることなく、リス

  2. HDRとは?AndroidスマホでHDR撮影を使いこなす方法

    ここ数年でスマートフォンのカメラ性能は目覚ましい進化を遂げました。多くの人は従来のデジタルカメラを手放し、手軽さに優れたスマホでの撮影を選ぶようになっています。この変化を支えているのは、ハードウェアとソフトウェアの両面での進化です。スマホのカメラ機能が高度になるにつれ、写真に対してより細かくコントロールできるようになりました。現在のほとんどのAndroidスマホには「HDR」という設定項目がありますが、そもそもHDRとは何なのでしょうか。そして、どんなときに使うべきなのでしょうか。 HDRの仕組み HDRはハイダイナミックレンジ(High Dynamic Range)の略称です。「ダイナミッ