C#/클래스와 구조체

[C#] 추상클래스

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

추상 클래스란?

추상 클래스는 말 그대로 "추상적인 틀"이다.
즉, 공통되는 기능은 직접 구현해놓고, 각 클래스마다 달라져야 하는 부분은 "구현하지 않고" 남겨두는 클래스

 

 비유: 자동차 설계도
  • Car라는 추상 클래스가 있다.
  • 바퀴가 4개이고, 시동을 거는 기능은 모든 차가 같다.
  • 그런데 달리는 방식은 차마다 다르다.
    (전기차, 휘발유차, 수소차 등…)
abstract class Car {
    public void StartEngine() {
        Debug.Log("엔진 시동 켬");
    }

    public abstract void Drive(); // 구체적인 운전 방식은 자식이 정함
}

 

 

 핵심 개념 3줄 요약

개념 설명
abstract class 직접 인스턴스화할 수 없는 클래스
abstract method 자식 클래스가 꼭 구현해야 하는 메서드
virtual method 자식 클래스가 원하면 덮어쓸 수 있는 메서드

 

 Unity 예시: 적 FSM용 추상 클래스

public abstract class EnemyState
{
    protected EnemyController enemy;

    public EnemyState(EnemyController enemy)
    {
        this.enemy = enemy;
    }

    public virtual void Enter() {
        Debug.Log("상태 진입");
    }

    public abstract void Update();  // 자식이 꼭 구현해야 함

    public virtual void Exit() {
        Debug.Log("상태 종료");
    }
}
  • Enter, Exit은 기본 동작이 있으니까 바로 쓸 수도 있고 덮어쓸 수도 있다.
  • Update()는 각 상태마다 다르니까 꼭 자식 클래스에서 구현해야 한다.

 

 

✅ 왜 쓰는 걸까?

  • 상태마다 중복되는 코드를 줄일 수 있다.
  • 실수로 Update() 같은 걸 안 만들었을 때 컴파일러가 오류로 알려준다.
  • 상태 전환, 변수 공유 등이 깔끔하게 정리된다.

 

 

🤔 그럼 일반 클래스랑 뭐가 다른가?

비교일반 클래스추상 클래스

 

비교 일반 클래스 추상 클래스
객체 생성 가능 ❌ 직접 생성 불가 (자식 통해 사용)
메서드 구현 다 구현돼 있음 일부는 구현 X, 자식이 꼭 해야 함
상속 목적 구체적 용도 공통 틀 제공, 확장 목적
728x90

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

추상클래스 abstract vs virtual  (0) 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