C#

(C#) 인터페이스를 이용한 다중 상속 예제: ISwim IFly Animal Bird

코딩ABC 2023. 7. 29. 09:55
반응형

C#에서는 기본으로 클래스의 다중 상속은직접 지원되지 않습니다. 그러나 C#은 인터페이스를 사용하여 다중 상속을 달성하는 대체 방법을 제공합니다.

 

인터페이스를 이용한 다중 상속을 설명하기 위해서 다음과 같은 예제를 살펴보겠습니다.

Animal, ISwim 및 IFly의 세 가지 클래스가 있다고 가정합니다.

ISwim과 IFly 모두에서 "상속"할 수 있는 Bird 클래스를 만듭니다.

 

아래 예제에서 Bird 클래스는 Animal 클래스에서 파생되며 ISwim 및 IFly 인터페이스를 모두 구현합니다. Bird 클래스는 여러 클래스에서 직접 상속되지 않지만 인터페이스 구현을 통해 ISwim 및 IFly 모두에서 동작을 얻습니다.

인터페이스는 구현 클래스가 따라야 하는 동작에 대한 계약을 제공한다는 점을 기억하십시오. 여러 인터페이스를 구현하면 클래스가 각 인터페이스에서 다른 동작을 나타낼 수 있습니다. 이 개념은 기존의 다중 상속에서 발생하는 모호성 문제에 직면하지 않고 다중 상속을 달성하는 방법입니다.

using System;

// Interface for Swim behavior
public interface ISwim
{
    void Swim();
}

// Interface for Fly behavior
public interface IFly
{
    void Fly();
}

// Base class representing an Animal
public class Animal
{
    public string Name { get; set; }
}

// Bird class "inherits" from ISwim and IFly interfaces
public class Bird : Animal, ISwim, IFly
{
    public void Swim()
    {
        Console.WriteLine($"{Name} is swimming.");
    }

    public void Fly()
    {
        Console.WriteLine($"{Name} is flying.");
    }
}

 

Main() 메서드에서는 다음과 같이 Bird 클래스를 사용할 수 있습니다.

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Bird bird = new Bird { Name = "Sparrow" };
            bird.Swim(); // Output: Sparrow is swimming.
            bird.Fly();  // Output: Sparrow is flying.
        }
    }
}

(Output)

(C#) 인터페이스를 이용한 다중 상속 예제: ISwim IFly Animal Bird

 

반응형