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

C#에서 인터페이스를 선언하고 사용하는 방법 총정리

C#에서 인터페이스(Interface)는 클래스가 반드시 구현해야 하는 속성(Property), 메서드(Method), 이벤트(Event) 등의 멤버들을 정의하는 계약(Contract) 역할을 합니다.

인터페이스에는 멤버의 선언만 포함되며, 실제 구현은 해당 인터페이스를 상속받는 파생 클래스의 책임입니다. 이를 통해 코드의 일관성을 유지하면서 다형성(Polymorphism)을 활용한 유연한 설계가 가능합니다.

인터페이스 선언 방법

인터페이스는 interface 키워드를 사용하여 선언합니다. 관례상 인터페이스 이름은 대문자 'I'로 시작하며, 아래와 같이 작성할 수 있습니다.

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

인터페이스 사용 예제

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

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

namespace InterfaceApplication {

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

    public class Transaction : ITransactions {
        private string tCode;
        private string date;
        private double amount;

        public Transaction() {
            tCode = " ";
            date = " ";
            amount = 0.0;
        }

        public Transaction(string c, string d, double a) {
            tCode = c;
            date = d;
            amount = a;
        }

        public double getAmount() {
            return amount;
        }

        public void showTransaction() {
            Console.WriteLine("Transaction: {0}", tCode);
            Console.WriteLine("Date: {0}", date);
            Console.WriteLine("Amount: {0}", getAmount());
        }
    }

    class Tester {

        static void Main(string[] args) {
            Transaction t1 = new Transaction("001", "8/10/2012", 78900.00);
            Transaction t2 = new Transaction("002", "9/10/2012", 451900.00);

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

위 예제에서 Transaction 클래스는 ITransactions 인터페이스를 상속받아 showTransaction()getAmount() 메서드를 직접 구현하고 있습니다. 이처럼 인터페이스를 구현하는 클래스는 인터페이스에 선언된 모든 멤버를 반드시 정의해야 합니다.

실행 결과

Transaction: 001
Date: 8/10/2012
Amount: 78900
Transaction: 002
Date: 9/10/2012
Amount: 451900

인터페이스 활용 시 알아두면 좋은 점

  • 인터페이스 멤버에는 기본적으로 접근 제한자를 명시하지 않으며, 모든 멤버는 암묵적으로 public입니다.
  • 클래스는 여러 개의 인터페이스를 동시에 구현할 수 있어 다중 상속의 효과를 얻을 수 있습니다.
  • C# 8.0부터는 인터페이스에 기본 구현(Default Implementation)을 제공할 수도 있습니다.
  • 인터페이스는 인스턴스를 직접 생성할 수 없으며, 이를 구현한 클래스를 통해서만 사용할 수 있습니다.