프로젝트를 하다보면 Monster/Boss와 Monster/Mook를 만들어야 할 때가 있다. 이것은 몬스터에 국한되어 있는 것이 절대 아니다. 이럴 때마다 나는 아직 고민을 하게 되는 것 같다. 그래서 공통된 Monster를 만들 때, Interface를 써야하는가, 아니면 추상 클래스를 써야하는가? 고민을 해결하기 위해서는 두 가지에 대한 정의를 이해하고 넘어가야 할 것 같아 작성해본다.
추상클래스
일반적인 클래스와 동일하게 멤버변수와 메서드를 갖고 추가적으로 '추상 메서드'를 갖는다. 여기서 추상 메서드란 정말 이름만 있고 구현부가 없는 메소드를 말한다.
public string getNickName(int i);
이런 식으로 구현부가 없는 메서드를 단 하나라도 가진 클래스는 추상 클래스가 된다. 추상 클래스가 되면 new 키워드를 사용하여 인스턴스화할 수 없다. 클래스를 사용하려면 추상 클래스를 상속 받아 오버라이딩하여야 한다.
이러면 Interface와 다른 것이 무엇일까?
크게 다르지 않는 것이 정답이었다.
Interface
는 추상 클래스의 특수 형태이다. 추상 클래스 중에서 멤버 변수와 메서드를 제거한 채 추상 메서드만 남긴 형태를 인터페이스라고 한다.
두 개의 차이점은 목적성에 있다. 추상 클래스는 기본적으로 클래스이며 이를 상속, 확장하여 사용하기 위한 것이다. 반면 인터페이스는 해당 인터페이스를 구현한 객체들에 대한 동일한 사용방법과 동작을 보장하기 위해 사용된다.
결론적으로
interface도 추상 클래스의 파생이지만 동일한 동작과 사용을 위해 사용한다고 볼 수 있다. 사용에 빡빡한 정도가 추상클래스 < interface라고 이해할 수 있을 것 같다.
참고
Interface와 Abstract class 의 차이점 - 인프런
안녕하세요, 강의 잘 듣고 있습니다. 강의에서 이끌어 주시는대로 따라가다가 생각을 해봤습니다. - ControllerV1 은 추상적 형태이고, MemberFormControllerV1. MemberSaveControllerV1, MemberListControllerV1 는...
www.inflearn.com
'Unity' 카테고리의 다른 글
면접 예상 질문 & 답변 (2) | 2024.09.27 |
---|---|
포트폴리오 정리 + 면접 대비 (0) | 2024.09.13 |
2. 유니티 인터페이스 (0) | 2023.05.03 |
1. 유니티 준비 (0) | 2023.05.03 |
0. 시작 (0) | 2023.05.03 |