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 |