사전캠프/TIL

내일배움캠프 20일차 TIL - abstrack class, Interface 사용 구분

서보훈 2024. 10. 14. 20:26

수준별 학습에서 abstrack 와 interface 의 사용 차이점에 대해 그림으로 구분해보고자 합니다.

 

abstrack class 는 추상클래스로, 메서드를 선언하지만 그 내용을 구현하지 않는 상속을 위한 클래스 입니다.

interface 는 추상클래스와 비슷하게 메서드의 이름을 선언하고 내용을 구현하지 않지만, 추상클래스와는 다른점이 있습니다.

 

먼저 가장 큰점은 abstrack class 는 클래스이기 때문에, 이 클래스를 부모 클래스로 가지는 클래스는 다른 클래스를 부모로 가질 수 없습니다(단일상속).

 

interface의 경우, 한번에 여러개의 인터페이스를 상속받을 수 있으며, 추상클래스를 상속받은 상태에서도 인터페이스를 추가로 상속받을 수 있습니다.

 

이 두가지 기능을 사용할때는 주로 이러한 기준을 통해 사용합니다.

예시로써 NPC 클래스와, 상자 클래스가 있다고 가정하겠습니다.

 

먼저, 캐릭터라는 추상 클래스를 만들어 주고, 이를 NPC 클래스에 상속시켜주었습니다.

이 추상클래스는 게임속, 캐릭터의 기능을 모두 담고있는 클래스 입니다.

따라서, 유저 캐릭터 또한 캐릭터 추상 클래스를 상속받아서 사용 할 수 있습니다.

이처럼 추상클래스의 경우 클래스의 상위 개념에 속하는 경우, 그 클래스들의 공통 기능의 메서드 명을 구현하는데 사용할 수 있습니다.

이때, 메서드의 이름만 선언하기때문에, 이름이 같아도 기능이 다를 수 있습니다.

 

반면, 상자와 NPC의 공통점은 유저가 상호작용이 가능하다는점 입니다.

NPC 에는 말을 걸 수 있으며, 상자는 상호작용을 통해 열 수 있습니다.

유저끼리는 별다른 상호작용이 없다고 가정합니다.

 

이 때, 이 상호작용을 interface로 구현하여 두 클래스의 상호작용 기능을 구현할 수 있습니다.

이때, 유저는 인터페이스 내용에 포함되지 않습니다.

또한, 상호작용의 개념은 상자와 NPC 두 클래스의 상위 개념이라고 보기 힘든 상태입니다.

 

이처럼 다른 클래스 사이에 같은 기능을 할 경우, 인터페이스를 통해 기능명을 선언하고 사용할 수 있습니다.

'사전캠프 > TIL' 카테고리의 다른 글

내일배움캠프 4일차 TIL - 카드게임 마무리  (0) 2024.09.12
내일배움캠프 2일차 - DOTween  (0) 2024.09.10
사전캠프 09/05 TIL  (0) 2024.09.05
사전캠프 08/27 TIL  (0) 2024.08.27
사전캠프 08/26 TIL  (0) 2024.08.26