인터페이스를 매개 변수로 사용하여 메서드 정의
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.cs 및 Cat.cs
이러한 파일에는 Dog 및 Cat 클래스가 포함되어 있으며, 이 클래스들은 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#에서 인터페이스의 개념을 이해하는 단순하면서도 효과적인 방법입니다.