Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 인터페이스 완벽 가이드: 개념부터 구현 예제까지

C#에서 인터페이스(Interface)는 속성(property), 메서드(method), 이벤트(event) 등을 멤버로 정의하는 일종의 계약서 역할을 합니다. 중요한 점은 인터페이스가 멤버에 대한 선언만 포함한다는 것입니다. 실제 구현은 인터페이스를 상속받는 클래스(파생 클래스)의 책임이며, 이를 통해 파생 클래스들이 반드시 따라야 할 표준 구조를 제공할 수 있습니다.

인터페이스 이름은 관례상 대문자 'I'로 시작하며(예: ITransactions), 이를 통해 개발자가 코드만 보고도 인터페이스임을 쉽게 식별할 수 있습니다.

인터페이스 선언 방법

C#에서 interface 키워드를 사용해 인터페이스를 선언하는 기본 문법은 다음과 같습니다.

public interface ITransactions {
    // 인터페이스 멤버
    void showTransaction();
    double getAmount();
}

위 코드처럼 인터페이스 내부에는 메서드의 시그니처(이름, 매개변수, 반환 타입)만 작성하고, 본문(body)은 정의하지 않습니다. 접근 제한자도 명시하지 않으며, 모든 멤버는 기본적으로 public으로 간주됩니다.

C# 인터페이스 사용 예제

다음은 인터페이스를 선언하고 이를 클래스에서 구현하여 사용하는 전체 예제입니다.

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;

namespace Demo {

    // 인터페이스 선언
    public interface ITransactions {
        // 인터페이스 멤버
        void showTransaction();
    }

    // 인터페이스를 상속받아 구현하는 클래스
    public class Transaction : ITransactions {
        private string tCode;
        private string date;

        // 기본 생성자
        public Transaction() {
            tCode = " ";
            date = " ";
        }

        // 매개변수가 있는 생성자
        public Transaction(string c, string d) {
            tCode = c;
            date = d;
        }

        // 인터페이스 멤버 구현
        public void showTransaction() {
            Console.WriteLine("Transaction ID: {0}", tCode);
            Console.WriteLine("Date: {0}", date);
        }
    }

    class Tester {

        static void Main(string[] args) {
            Transaction t1 = new Transaction("8877", "6/25/2018");
            Transaction t2 = new Transaction("5656", "7/25/2018");

            t1.showTransaction();
            t2.showTransaction();
            Console.ReadKey();
        }
    }
}

실행 결과

Transaction ID: 8877
Date: 6/25/2018
Transaction ID: 5656
Date: 7/25/2018

핵심 정리

  • 인터페이스는 멤버의 선언만 포함하며, 구현은 상속받는 클래스가 담당합니다.
  • 클래스가 인터페이스를 상속받으면(: 사용), 인터페이스의 모든 멤버를 반드시 구현해야 합니다.
  • 인터페이스를 통해 여러 클래스에 공통된 규약(표준 구조)을 강제할 수 있어 코드의 일관성과 유지보수성이 향상됩니다.
  • 인터페이스 이름은 관례적으로 'I' 접두사를 붙여 명명합니다.