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)
반응형