산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 인터페이스 마스터하기: 정의, 구현, 실전 활용 사례

C# 인터페이스 완벽 가이드

C# 인터페이스의 기초부터 생성 및 구현 방법, 실제 프로젝트에서 빛을 발하는 활용 시나리오까지 상세히 안내합니다.

C# 인터페이스란 무엇인가?

C#에서 인터페이스는 구현을 제공하지 않으면서 메서드, 프로퍼티, 이벤트, 인덱서의 집합을 정의하는 계약(Contract)입니다. 추상 클래스와 달리 인터페이스의 모든 멤버는 암시적으로 abstract이며 public입니다. 이러한 특성 덕분에 인터페이스는 서로 관련 없는 여러 클래스가 공유할 수 있는 기능(Capability)을 정의하는 데 이상적입니다.

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($"Rectangle Area: {area}");
        }
    }
    class Program {
        static void Main(string[] args) {
            Rectangle rect = new Rectangle();
            rect.CalculateArea(100, 200);
        }
    }
}

실행 결과

Rectangle Area: 20000

여러 인터페이스 동시 구현

C#에서는 한 클래스가 여러 인터페이스를 동시에 구현할 수 있어, 타입의 다중 상속을 가능하게 합니다.

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($"Rectangle Area: {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();
        }
    }
}

실행 결과

Rectangle Area: 20000 Red Rectangle

인터페이스 참조 변수 활용

인터페이스는 직접 인스턴스화할 수 없지만, 인터페이스 타입의 변수를 선언하고 이를 구현 클래스의 인스턴스로 할당할 수 있습니다. 이는 다형성(Polymorphism)을 구현하는 강력한 도구입니다.

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($"Rectangle Area: {area}");
        }
    }
    class Program {
        static void Main(string[] args) {
            IPolygon poly = new Rectangle();
            poly.CalculateArea(100, 200);
        }
    }
}

실행 결과

Rectangle Area: 20000

실전 예제: 다형성을 활용한 도형 면적 계산

IPolygon 인터페이스를 정의하고 이를 구현하는 두 개의 구체적인 도형 클래스를 만듭니다. 각 도형은 독립적으로 면적을 계산합니다.

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($"Rectangle Area: {area}");
        }
    }
    class Square : IPolygon {
        public void CalculateArea() {
            int side = 30;
            int area = side * side;
            Console.WriteLine($"Square Area: {area}");
        }
    }
    class Program {
        static void Main(string[] args) {
            Rectangle rect = new Rectangle();
            rect.CalculateArea();
            Square sq = new Square();
            sq.CalculateArea();
        }
    }
}

실행 결과

Rectangle Area: 2700 Square Area: 900

왜 C# 인터페이스를 사용해야 할까요?

C 언어

  1. SPICE와 명령줄 인터페이스(CLI) 사용법
  2. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  3. Java 컬렉션 프레임워크: 핵심 인터페이스, 구현체, 실전 활용
  4. Java Collection 인터페이스: 핵심 개념과 필수 메서드
  5. Java NavigableSet 인터페이스 완전 정복: 탐색, 정렬, 실전 예제
  6. Java 람다 표현식 마스터하기: 기초부터 Stream API까지
  7. 긴 진입로를 위한 신뢰성 높은 무선 진입로 센서 – 라즈베리 파이 간편 연동
  8. 자바 인터페이스 이해하기: 정의, 용도, 모범 사례
  9. Java 9 프라이빗 인터페이스 메서드: 캡슐화 및 코드 재사용 강화
  10. C# 인터페이스 마스터하기: 견고한 객체 지향 설계를 위한 계약