工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C#インターフェイスをマスターする:定義、実装、実践的なユースケース

C#インターフェイスの解説

このガイドでは、C#インターフェイスの基礎から作成・実装方法、そして実際の開発現場で威力を発揮するシナリオまでを網羅的に解説します。

C#インターフェイスとは?

C#におけるインターフェイスは、メソッド、プロパティ、イベント、インデクサーのセットを定義する「契約」であり、実装を一切含みません。抽象クラスとは異なり、インターフェイスのすべてのメンバーは暗黙的に abstract かつ public となります。この特性により、互いに無関係な複数のクラスが共通の機能を共有する際に最適な仕組みとなっています。

interface IPolygon { void CalculateArea(); }

インターフェイスの実装

インターフェイスを利用するには、クラスがそのインターフェイスを実装し、定義されているすべてのメンバーに具体的な実装を提供する必要があります。継承と同様にコロン(:)構文を使用します。

using System;

namespace CsharpInterface {
    interface IPolygon {
        void CalculateArea(int length, int breadth);
    }

    class Rectangle : IPolygon {
        public void CalculateArea(int length, int breadth) {
            int area = length * breadth;
            Console.WriteLine($"Area of Rectangle: {area}");
        }
    }

    class Program {
        static void Main(string[] args) {
            Rectangle rect = new Rectangle();
            rect.CalculateArea(100, 200);
        }
    }
}

出力

Area of Rectangle: 20000

複数インターフェイスの実装

C#では、1つのクラスが複数のインターフェイスを同時に実装できます。これにより、型の多重継承に相当する機能が実現されます。

using System;

namespace CsharpInterface {
    interface IPolygon {
        void CalculateArea(int a, int b);
    }

    interface IColor {
        void GetColor();
    }

    class Rectangle : IPolygon, IColor {
        public void CalculateArea(int a, int b) {
            int area = a * b;
            Console.WriteLine($"Area of Rectangle: {area}");
        }

        public void GetColor() {
            Console.WriteLine("Red Rectangle");
        }
    }

    class Program {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.CalculateArea(100, 200);
            r.GetColor();
        }
    }
}

出力

Area of Rectangle: 20000 Red Rectangle

インターフェイス参照の活用

インターフェイス自体を直接インスタンス化することはできませんが、インターフェイス型の変数を宣言し、それを実装クラスのインスタンスで参照できます。これはポリモーフィズムを実現する強力な手法です。

using System;

namespace CsharpInterface {
    interface IPolygon {
        void CalculateArea(int length, int breadth);
    }

    class Rectangle : IPolygon {
        public void CalculateArea(int length, int breadth) {
            int area = length * breadth;
            Console.WriteLine($"Area of Rectangle: {area}");
        }
    }

    class Program {
        static void Main(string[] args) {
            IPolygon poly = new Rectangle();
            poly.CalculateArea(100, 200);
        }
    }
}

出力

Area of Rectangle: 20000

実践例: ポリモーフィックな図形計算

以下では IPolygon インターフェイスを定義し、それを実装する2つの具体的な図形クラスを作成します。各図形は独自に面積を計算します。

using System;

namespace CsharpInterface {
    interface IPolygon {
        void CalculateArea();
    }

    class Rectangle : IPolygon {
        public void CalculateArea() {
            int length = 30;
            int breadth = 90;
            int area = length * breadth;
            Console.WriteLine($"Area of Rectangle: {area}");
        }
    }

    class Square : IPolygon {
        public void CalculateArea() {
            int side = 30;
            int area = side * side;
            Console.WriteLine($"Area of Square: {area}");
        }
    }

    class Program {
        static void Main(string[] args) {
            Rectangle rect = new Rectangle();
            rect.CalculateArea();

            Square sq = new Square();
            sq.CalculateArea();
        }
    }
}

出力

Area of Rectangle: 2700 Area of Square: 900

なぜC#インターフェイスを使うのか?

C言語

  1. 長い driveway 向けの信頼性の高いワイヤレスセンサー - Raspberry Piとの簡単統合
  2. SPICEでのコマンドラインインターフェースの使い方
  3. C#のインターフェース:堅牢なオブジェクト指向設計のための契約定義
  4. Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
  5. Javaコレクションフレームワーク入門:主要インターフェースと実装クラス
  6. Java Collectionインターフェース:核心概念と必須メソッド
  7. Java Queueインターフェース完全マスター:メソッド、実装クラス、実践的活用
  8. Java NavigableSetインターフェースをマスター:ナビゲーション、ソート、実践例
  9. Javaラムダ式完全ガイド:基礎からStream APIまで
  10. Javaインターフェース完全ガイド: 定義・実装・多重継承・タグインターフェース
  11. Java 9プライベートインターフェースメソッド:カプセル化とコード再利用を強化