본문 바로가기
개발 공식/C#

C# 언어 인터페이스 사용 방법

by JinCoding 2023. 3. 19.
반응형

 

C#에서 인터페이스는 객체 지향 프로그래밍의 핵심 개념 중 하나입니다.

인터페이스는 클래스와 비슷하지만, 클래스와 달리 구현되지 않은 메서드와 프로퍼티를 가질 수 있습니다.

인터페이스는 클래스가 따라야 하는 규약을 정의하는데 사용되며, 클래스는 인터페이스에 정의된 모든 멤버를 구현해야 합니다.

인터페이스를 사용하면 코드의 유연성과 재사용성을 높일 수 있습니다.

인터페이스는 다형성과 같은 객체 지향 프로그래밍의 기본 개념과 함께 사용되며, 인터페이스를 구현한 클래스의 인스턴스는 모두 같은 인터페이스 타입으로 취급됩니다.

따라서 같은 인터페이스를 구현한 다른 클래스의 객체를 동일하게 다룰 수 있어 유지보수와 확장성이 용이해집니다.

이제 인터페이스의 사용 방법에 대해 자세히 알아보겠습니다.


인터페이스 선언하기

인터페이스는 다음과 같이 interface 키워드를 사용하여 선언할 수 있습니다.

interface IExampleInterface
{
    void DoSomething();
    int GetSomething();
}

 

위 예제에서 IExampleInterface는 인터페이스의 이름입니다.

인터페이스 내에는 메서드, 프로퍼티, 이벤트, 인덱서 등의 멤버를 선언할 수 있습니다.

하지만 이들 멤버는 모두 구현되지 않은 상태이며, 인터페이스를 구현한 클래스에서 구현해야 합니다.

인터페이스 구현하기

인터페이스를 구현하는 클래스는 class 키워드를 사용하여 정의합니다.

클래스 이름 뒤에 콜론(:)을 붙이고 구현하려는 인터페이스 이름을 지정합니다.

class ExampleClass : IExampleInterface
{
    public void DoSomething()
    {
        Console.WriteLine("Doing something...");
    }

    public int GetSomething()
    {
        return 42;
    }
}

 

위 예제에서 ExampleClass는 IExampleInterface 인터페이스를 구현하는 클래스입니다.

ExampleClass는 DoSomething()과 GetSomething() 메서드를 구현하며, 각각 "Doing something..." 문자열을 출력하고 42를 반환합니다.

인터페이스 사용하기

인터페이스를 사용하는 방법은 다음과 같습니다.

IExampleInterface exampleObject = new ExampleClass();
exampleObject.DoSomething();
int something = exampleObject.GetSomething();

 

위 예제에서 IExampleInterface 인터페이스 타입으로 exampleObject 변수를 선언하고 ExampleClass 클래스의 인스턴스를 할당합니다.

이후 exampleObject를 이용하여 DoSomething()과 GetSomething() 메서드를 호출합니다.

이때 exampleObject는 IExampleInterface 인터페이스의 타입으로 취급되기 때문에, ExampleClass 클래스에서 구현한 메서드들을 호출할 수 있습니다.

인터페이스 간 상속하기

인터페이스도 클래스처럼 상속 관계를 가질 수 있습니다.

인터페이스 간 상속은 다중 상속이 가능합니다.

interface IExampleInterface2 : IExampleInterface
{
    string Name { get; set; }
}

 

위 예제에서 IExampleInterface2 인터페이스는 IExampleInterface 인터페이스를 상속하며, Name 프로퍼티를 추가로 가지고 있습니다.

이렇게 인터페이스를 상속하는 것은 클래스와 마찬가지로 코드 재사용성을 높일 수 있습니다.


추가로, 인터페이스는 다른 클래스나 모듈에서 어떤 객체가 어떤 기능을 제공하는지 알 수 있게 해주는 것이기 때문에, 코드의 가독성과 이해도를 높일 수 있습니다.

또한 인터페이스를 사용하면 상속을 받을 수 없는 클래스에도 기능을 추가할 수 있는 장점이 있습니다.

하지만 인터페이스는 추상 클래스와 마찬가지로 인스턴스를 직접 생성할 수 없기 때문에, 인터페이스를 구현한 클래스의 인스턴스를 생성해야만 합니다.

따라서 인터페이스를 사용하려면 인터페이스를 구현한 클래스가 필요합니다.

마지막으로, 인터페이스의 이름은 일반적으로 앞에 "I"를 붙이는 것이 관례입니다.

이는 해당 클래스가 인터페이스를 구현하고 있음을 알리는 역할을 합니다.

예를 들어, IDisposable 인터페이스를 구현한 클래스는 일반적으로 IDisposable 인터페이스를 구현하고 있다는 의미로, "IDisposable"을 클래스 이름 앞에 붙이는 것이 관례입니다.

반응형

댓글