내일배움캠프 TIL

추상 Class와 인터페이스 본캠프 TIL 01/23

parkcw0325 2025. 1. 23. 20:11

이번에 타입스크립트를 배우면서 인터페이스와 추상클래스라는 것을 강의에서 들었는데 크게 이해가 잘 되지 않아서 여러 곳에서 알아온 내용을 작성하려 합니다.

 

일단 추상클래스가 무엇인지 먼저 알아보겠습니다.

 

 

추상 클래스는 기존에 사용하던 클래스와는 약간 다릅니다. 똑같이 속성, 매서드를 구현할 수는 있지만 그 값을 선언만 할 수 있는 추상 매서드를 구현할 수 있습니다. 그렇기 때문에 추상 매서드가 선언만 되어있기에 바로 객체로 만드는 것은 불가능합니다.

 

위 의 예시코드를 보면 애니멀이라는 추상클래스가 존재하고 그 안에는 소리를 낸다가 추상매서드로 선언이 되어있고 움직이는 무브 매서드는 구체적인 매서드로 작성되어 있습니다. 이를 해석하면 모든 동물은 소리를 낼 수 있지만, 각 동물마다 소리가 모두 다르니 이 부분은 다른 클래스를 생성할때 애니멀 추상클래스를 상속받아서 만들어줘! 라는 의미가 됩니다. 그렇기 때문에 도그라는 클래스를 생성할때 애니멀 클래스를 상속받아서 소리를 낸다라는 매서드를 구현한 것을 알 수 있습니다.

 

기존의 클래스와의 차이점을 확실하게 이해하시겠죠?

 

그렇다면 이제 이 추상클래스와 인터페이스가 어떠한 차이가 있는지 살펴보겠습니다.

추상 클래스로 애니멀을 만들고 이름을 문자타입으로 받아옵니다. 추상매서드로 짖는다라는 선언을 하고 무브 매서드는 구현하였습니다. 해당 클래스를 도그라 상속받아 남아있던 추상매서드를 구현하면 아래 도그라는 객체는 소리도 짖고 움직이기까지 하게 됩니다.

 

다음은 인터페이스입니다 일단 보이는 걸로는 추상 클래스와 큰 차이가 없어보입니다. 하지만 인터페이스의 가장 중요한점은 선언만 가능하다는 점입니다. 추상클래스처럼 직접 매서드를 구현할 수는 없고 단순이 클래스의 기본 틀만 잡아주는 역할입니다. 추상 클래스는 틀도 잡을 뿐더러 직접 제작까지도 가능한 느낌이라면 인터페이스는 단순하게 틀만 잡는 역할로 이해하시면 됩니다. 이렇게 만들어진 애니멀 인터페이스는 하나의 클래스에 여러가지 인터페이스를 상속시킬 수 있습니다. 

 

예를 들어, 지금 위 코드에 있는 애니멀이라는 인터페이스와 하늘을 나는 생물체 라는 인터페이스를 만들어서 fly라는 매서드를 선언했다고 가정합시다

 

그러면 우리는 조류라는 클래스를 만들어서 애니멀과, 하늘을 나는 생물체의 인터페이스를 동시에 상속할 수 있게 되는겁니다. 

조류라는 클래스안에는 인터페이스에 선언되었던 매서드들을 구현하면 됩니다. (소리를낸다, 하늘을 난다) 

 

인터페이스와 추상 클래스의 차이점을 얼추 이해하셨나요?

 

추상클래스는 붕어빵틀을 만들지만 붕어빵을 직접 찍어낼 수도 있습니다.

하지만 인터페이스는 무조건 붕어빵틀만 만들 수 있습니다. 로 이해하시면 되겠습니다.