카테고리 없음
추상화(Abstract)
solie75
2022. 6. 24. 23:54
추상 클래스( Abstract class ) : 순수 가상함수 (Pure Virtual Function)가 1개 이상 있는 클래스
순수 가상함수 문법
virtual 반환타입 함수명() = 0;
기존의 가상함수의 문법을 따른다.
따라서 override(재정의)하지 않으면 상속 받은 클래스 또한 추상클래스이다.
추상 클래스는 객체를 만들지 못한다. -> (추상적인 클래스의 객체 생성방지)
예를 들어 메이플의 모든 몬스터에 대하여 최상위 클래스를 class Moster 가 존재하고 그 아래에 여러 구역에 따른 class, 이벤트 형으로 공격이 없는 클래스 등등 수만은 몬스터의 형태를 분류하는 클래스가 존재할 것이다. 이때 최상위 클래스인 Monster로 객체를 만들어 어떻게 사용할 수 있을까? 이런경우 객체 생성을 방어하는 목적으로 Class Moster의 맴버함수로 순수 가상함수를 생성하여 Class Moster를 추상 클래스로 변경시키는 것이다.
하지만 아무리 방대하고 추상적인 개념의 class Monster 라도 맴버함수를 가지고 있을 것이다. 즉 모든 몬스터가 가지고 있는 공통점이 있을 것이다. 혹은 몬스터라는 하나의 개념을 확립하기 위해서 가져야하는 필수조건 예를들어 HP와 같은 것들이 있을 것이다. 이러한 것을 순수 가상함수로 두고 파생클래스가 반드시 override 하게끔 한다.
다시말해 반드시 구현해야 하는 인터페이스 제시한다.