C#/클래스와 구조체

추상클래스 abstract vs virtual

도도돋치 2025. 5. 27. 13:57
Contents 접기
728x90

 abstract

  • 본문 없음 → 자식이 반드시 구현해야 함
  • 자식 클래스에서 override 없으면 컴파일 에러 발생
public abstract class EnemyState {
    public abstract void Update(); // 자식이 무조건 구현해야 함
}

 

 

 virtual

  • 기본 구현 있음 → 자식이 원하면 override
  • 구현 안 해도 기본 기능 그대로 사용 가능
public abstract class EnemyState {
    public virtual void Enter() { Debug.Log("기본 Enter"); }
    public abstract void Update(); // 반드시 구현
    public virtual void Exit() { Debug.Log("기본 Exit"); }
}

 

 

요약

키워드 본문 자식 구현 필수 여부
abstract 없음 ✅ 반드시 구현
virtual 있음 ❌ 선택적 구현

 

> 추상 클래스 안에서는 abstract와 virtual을 섞어서 쓸 수 있다

  • 공통 동작 = virtual
  • 꼭 구현해야 하는 동작 = abstract
728x90

'C# > 클래스와 구조체' 카테고리의 다른 글

[C#] 추상클래스  (3) 2025.05.27
[C#] 오버라이딩  (0) 2025.04.17
[C#] 다형성(Polymorphism)  (0) 2025.04.17
[C#] 상속(Inheritance)  (0) 2025.04.17
[C#] 프로퍼티 (Property)  (0) 2025.04.17