인터페이스 vs 클래스

00·2024년 12월 22일

C#

목록 보기
54/149

클래스는 객체를 만들기 위한 설계도입니다. 붕어빵 틀을 생각하면 이해하기 쉽습니다. 붕어빵 틀에는 붕어빵의 모양, 크기 등이 정의되어 있고, 이 틀을 사용하여 여러 개의 붕어빵을 만들 수 있습니다. 마찬가지로 클래스는 객체의 속성(데이터)과 메서드(행위)를 정의하고, 이 클래스를 사용하여 여러 개의 객체를 생성할 수 있습니다.

인터페이스는 클래스가 갖춰야 할 기능을 정의합니다. 예를 들어, "날 수 있는" 기능을 나타내는 인터페이스를 정의하고, 비행기, 새, 슈퍼맨 등의 클래스가 이 인터페이스를 구현하면 "날 수 있는" 기능을 갖추게 됩니다. 인터페이스는 클래스와 달리 구체적인 구현 내용은 가지고 있지 않습니다.

구현이란 인터페이스에 정의된 기능을 실제로 동작하도록 코드를 작성하는 것입니다. 인터페이스는 "날 수 있는" 기능을 정의하지만, 비행기, 새, 슈퍼맨은 각자 다른 방식으로 날 수 있습니다. 따라서 각 클래스는 인터페이스에 정의된 기능을 자신의 특징에 맞게 구현해야 합니다.

인터페이스와 클래스의 주요 차이점

특징인터페이스클래스
목적클래스가 갖춰야 할 기능 정의객체를 생성하기 위한 설계도
구현구현 내용 없음구현 내용 포함
상속다중 상속 가능단일 상속만 가능
인스턴스 생성불가능가능

예시

interface IFlyable  // 날 수 있는 기능을 정의하는 인터페이스
{
    void Fly();
}

class Airplane : IFlyable  // 비행기 클래스는 IFlyable 인터페이스를 구현
{
    public void Fly()
    {
        Console.WriteLine("엔진을 사용하여 날아갑니다.");
    }
}

class Bird : IFlyable  // 새 클래스는 IFlyable 인터페이스를 구현
{
    public void Fly()
    {
        Console.WriteLine("날개를 사용하여 날아갑니다.");
    }
}

이 코드에서 IFlyable 인터페이스는 Fly() 메서드를 정의하고, Airplane 클래스와 Bird 클래스는 Fly() 메서드를 각자의 방식으로 구현합니다.

인터페이스와 클래스의 차이점을 이해하고 적절히 사용하면 코드의 유연성, 재사용성, 유지보수성을 향상시킬 수 있습니다.

0개의 댓글