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

C# 인터페이스란 무엇인가? 개념부터 구현 예제까지

C# 인터페이스(Interface)란?

인터페이스는 속성(Property), 메서드(Method), 이벤트(Event)와 같은 멤버들을 정의하는 일종의 계약(Contract)입니다. 인터페이스 자체에는 멤버의 선언만 포함될 뿐, 실제 구현 내용은 없습니다. 멤버를 실제로 구현할 책임은 인터페이스를 상속받는 파생 클래스에 있습니다.

이러한 특성 덕분에 인터페이스는 여러 클래스가 반드시 따라야 할 표준 구조를 제공하는 데 매우 유용합니다. 즉, 서로 다른 클래스라도 동일한 인터페이스를 구현하면 같은 형태의 메서드와 속성을 갖추게 되어 코드의 일관성과 확장성이 크게 향상됩니다.

인터페이스 선언 방법

C#에서 인터페이스는 interface 키워드를 사용하여 다음과 같이 선언합니다.

public interface InterfaceName {
    // 인터페이스 멤버
}

관례적으로 인터페이스 이름은 I로 시작하도록 명명하는 것이 일반적입니다(예: ITransactions). 또한 C# 8.0부터는 인터페이스에 기본 구현(Default Implementation)을 포함할 수 있지만, 전통적으로는 선언만 두고 구현은 클래스에 맡기는 방식이 널리 사용됩니다.

C# 인터페이스 사용 예제

다음은 트랜잭션 정보를 출력하는 ITransactions 인터페이스를 정의하고, 이를 Transaction 클래스에서 구현하는 전체 예제입니다.

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

코드 설명

  • ITransactions 인터페이스: showTransaction() 메서드의 시그니처만 선언하며, 구현 내용은 포함하지 않습니다.
  • Transaction 클래스: ITransactions를 상속받아 showTransaction() 메서드를 실제로 구현합니다. 트랜잭션 코드와 날짜를 저장하고, 이를 콘솔에 출력합니다.
  • Main 메서드: 두 개의 Transaction 객체를 생성한 뒤, 각 객체의 트랜잭션 정보를 화면에 출력합니다.

이처럼 인터페이스를 활용하면 클래스가 반드시 제공해야 하는 기능을 명확히 규정할 수 있으며, 다형성(Polymorphism)을 활용한 유연하고 유지보수하기 좋은 코드 작성이 가능해집니다.