다음 코드의 실행 결과는?

과목: C#

문제 번호: 2656

medium
다음 코드의 실행 결과는?
class Animal
{
    public virtual void Sound()
    {
        Console.WriteLine("Animal sound");
    }
}

class Cat : Animal
{
    public override void Sound()
    {
        Console.WriteLine("Meow");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Animal myAnimal = new Cat();
        myAnimal.Sound();
    }
}
A. Animal sound
B. Meow
C. 컴파일 오류
D. 아무것도 출력되지 않음

정답: B



다형성에 의해 실제 객체 타입(Cat)의 메서드가 호출됩니다.

실행 과정:

1. Animal myAnimal = new Cat()
⦁ 변수 타입: Animal
⦁ 실제 객체: Cat

2. myAnimal.Sound() 호출
⦁ virtual-override 관계
⦁ 실제 객체(Cat)의 Sound() 실행

3. "Meow" 출력

다형성의 핵심:
⦁ 참조 타입이 아닌 실제 객체 타입의 메서드 실행
⦁ 런타임에 결정 (동적 바인딩)
⦁ virtual-override가 있어야 작동

💡 학습 팁

이 문제를 포함한 C# 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.