수준별 학습에서 abstrack 와 interface 의 사용 차이점에 대해 그림으로 구분해보고자 합니다.
abstrack class 는 추상클래스로, 메서드를 선언하지만 그 내용을 구현하지 않는 상속을 위한 클래스 입니다.
interface 는 추상클래스와 비슷하게 메서드의 이름을 선언하고 내용을 구현하지 않지만, 추상클래스와는 다른점이 있습니다.
먼저 가장 큰점은 abstrack class 는 클래스이기 때문에, 이 클래스를 부모 클래스로 가지는 클래스는 다른 클래스를 부모로 가질 수 없습니다(단일상속).
interface의 경우, 한번에 여러개의 인터페이스를 상속받을 수 있으며, 추상클래스를 상속받은 상태에서도 인터페이스를 추가로 상속받을 수 있습니다.
이 두가지 기능을 사용할때는 주로 이러한 기준을 통해 사용합니다.
예시로써 NPC 클래스와, 상자 클래스가 있다고 가정하겠습니다.
먼저, 캐릭터라는 추상 클래스를 만들어 주고, 이를 NPC 클래스에 상속시켜주었습니다.
이 추상클래스는 게임속, 캐릭터의 기능을 모두 담고있는 클래스 입니다.
따라서, 유저 캐릭터 또한 캐릭터 추상 클래스를 상속받아서 사용 할 수 있습니다.
이처럼 추상클래스의 경우 클래스의 상위 개념에 속하는 경우, 그 클래스들의 공통 기능의 메서드 명을 구현하는데 사용할 수 있습니다.
이때, 메서드의 이름만 선언하기때문에, 이름이 같아도 기능이 다를 수 있습니다.
반면, 상자와 NPC의 공통점은 유저가 상호작용이 가능하다는점 입니다.
NPC 에는 말을 걸 수 있으며, 상자는 상호작용을 통해 열 수 있습니다.
유저끼리는 별다른 상호작용이 없다고 가정합니다.
이 때, 이 상호작용을 interface로 구현하여 두 클래스의 상호작용 기능을 구현할 수 있습니다.
이때, 유저는 인터페이스 내용에 포함되지 않습니다.
또한, 상호작용의 개념은 상자와 NPC 두 클래스의 상위 개념이라고 보기 힘든 상태입니다.
이처럼 다른 클래스 사이에 같은 기능을 할 경우, 인터페이스를 통해 기능명을 선언하고 사용할 수 있습니다.
'내일배움캠프 > TIL' 카테고리의 다른 글
내일배움캠프 22일차 TIL - Input System 특강 정리 (0) | 2024.10.16 |
---|---|
내일배움캠프 21일차 TIL - 객체지향 특별강의 정리 (0) | 2024.10.15 |
내일배움캠프 19일차 TIL - New Input System : 1회만 입력받기 (0) | 2024.10.11 |
내일배움캠프 18일차 TIL - 개인프로젝트 스파르타타운 만들기 진행상황 (0) | 2024.10.10 |
내일배움캠프 17일차 TIL - Atan2 (0) | 2024.10.08 |