인터페이스를 매개 변수로 사용하여 메서드 정의

완료됨

C#에서 인터페이스는 클래스에 대한 계약을 설정합니다. 이 단원에서는 메서드가 인터페이스를 매개 변수로 허용하는 방법을 살펴보고, 이러한 메서드를 정의하기 위한 구문을 알아보고, 실제 샘플 구현을 검토합니다.

인터페이스를 허용하는 메서드

C#의 메서드는 전달된 개체가 특정 계약을 준수하도록 인터페이스를 매개 변수로 수락할 수 있습니다. 인터페이스를 매개 변수로 사용하면 보다 유연하고 재사용 가능한 코드를 사용할 수 있습니다.

예를 들어 인터페이스를 매개 변수로 허용하는 메서드를 IAnimal 고려합니다.

public interface IAnimal
{
    void MakeSound();
}

public void MakeAnimalSound(IAnimal animal)
{
    animal.MakeSound();
}

이 예제에서 메서드는 MakeAnimalSound 인터페이스를 IAnimal 수락하여 전달된 모든 개체에 메서드가 MakeSound 있는지 확인합니다.

비고

인터페이스를 메서드 매개 변수로 사용하면 느슨한 결합이 촉진되고 테스트 용이성이 향상됩니다.

예제: 메서드 매개 변수로서의 인터페이스

다음 예제에서는 각각 다른 클래스 또는 인터페이스를 포함하는 여러 파일이 있습니다. 조직 및 가독성을 높이기 위해 항목을 별도의 파일에 배치하는 것이 일반적입니다.

IAnimal.cs

IAnimal.cs 파일은 메서드를 포함하는 IAnimal 인터페이스를 정의하며, 그 메서드는 MakeSound입니다.

public interface IAnimal
{
    void MakeSound();
}

Dog.csCat.cs

이러한 파일에는 DogCat 클래스가 포함되어 있으며, 이 클래스들은 IAnimal 인터페이스를 구현하고 MakeSound 메서드를 제공합니다.

public class Dog : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Woof!");
    }
}

public class Cat : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Meow!");
    }
}

AnimalSound.cs

AnimalSound 클래스가 있는 이 파일에는 MakeAnimalSound 메서드가 있으며, 이 메서드는 IAnimal 인터페이스를 매개 변수로 받아 MakeSound 메서드를 호출합니다.

public class AnimalSound
{
    public void MakeAnimalSound(IAnimal animal)
    {
        animal.MakeSound();
    }
}

Program.cs

이 파일에는 ProgramMain 인스턴스를 만들고 DogCat클래스를 사용하여 AnimalSound 소리를 생성하는 메서드가 포함된 클래스가 포함되어 있습니다.

public class Program
{
    public static void Main()
    {
        IAnimal dog = new Dog();
        IAnimal cat = new Cat();
        
        AnimalSound animalSound = new AnimalSound();
        animalSound.MakeAnimalSound(dog); // Output: Woof!
        animalSound.MakeAnimalSound(cat); // Output: Meow!
    }
}

이 예제에서는 인터페이스를 메서드 매개 변수로 사용하여 느슨한 결합을 촉진하고 테스트 가능성을 향상시키는 방법을 보여 줍니다. C#에서 인터페이스의 개념을 이해하는 단순하면서도 효과적인 방법입니다.