[C#] Virtual과 Override

Gee·2025년 2월 24일

부모 클래스의 메서드를 자식 클래스에서 변경(재정의)하고 싶을 때 virtual과 override 키워드를 사용한다.

virtual

  • 부모 클래스에서 "재정의 가능"하게 만드는 키워드
public class Parent
{
    // virtual 메서드 → 자식 클래스에서 재정의 가능
    public virtual void ShowMessage()
    {
        Console.WriteLine("엄마 말 들어라");
    }
}
  • virtual을 사용하면 자식 클래스에서 override를 사용해 변경할 수 있도록 허용하는 것.
  • virtual이 붙은 메서드는 기본적으로 부모 클래스에서 동작하지만, 자식 클래스에서 override를 사용하면 기능을 변경할 수 있다.

override

  • 부모 클래스의 메서드를 "재정의"하는 키워드
public class Child : Parent
{
    // override → 부모의 ShowMessage() 메서드를 덮어쓰기 (재정의)
    public override void ShowMessage()
    {
        Console.WriteLine("용돈 주면 듣지");
    }
}
  • override는 부모 클래스에서 virtual로 정의된 메서드를 자식 클래스에서 새로운 기능으로 바꾸는 것.
Parent parent = new Parent();
parent.ShowMessage(); // "엄마 말 들어라"

Child child = new Child();
child.ShowMessage(); // "용돈 주면 듣지"
  • 동작 방식
    • Parent 클래스에서는 기본 메서드가 실행됨
    • Child 클래스에서는 override된 메서드가 실행됨

정리

키워드역할사용 위치
virtual메서드를 재정의 가능하게 만듦부모 클래스
override부모의 virtual 메서드를 변경함자식 클래스
profile
...

0개의 댓글