추상클래스는 클래스들의 클래스이다. 객체지향의 개념을 알고 있으면 추상화라는 개념을 이해할 수 있지만 그렇지 않다면 너무 어렵게 느껴진다. 이번 단원에서는 추상화의 개념과 추상 클래스에 대해 포스팅 하려한다.
추상의 사전적 의미는 다음과 같다.
사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것
뽑을 추(抽): "뽑다", "끌어내다"를 의미한다.
형상 상(象): "형상"이나 "모양"을 뜻한다.
즉, 어떤 대상의 특징만을 뽑아내어 간추리는 것이다. 그렇다면 특징을 어떻게 뽑아낼 수 있을까?
예를 들어 자동차, 비행기, 기차가 있다면 이 것들의 공통된 특징은 바로 '이동수단' 이라는 점이다. 이렇게 추상화를 하면 객체 하나하나의 디테일 보다는 공통된 특징만이 남게 된다.
다시 생각해보면 우리가 자동차, 비행기, 기차를 먼저 구현하지 않고 "이동수단"을 먼저 구현한다면 가지를 뻗어 공통된 성질을 갖는 여러가지 이동수단을 만들 수 있을 것이다. 이것이 바로 추상화의 핵심이다.
다시 처음으로 돌아가 추상 클래스는 클래스들의 클래스라고 했다. 애초에 클래스가 추상화를 한 상태인데 어떻게 또 특징을 뽑아낼 수 있을까?
예를 들어서 당신이 '메이플스토리' 게임을 하고있다고 가정하자. 당신은 '전사' 직업을 플레이 하고 있다. 이 때의 '전사'는 클래스에 속하고 당신의 캐릭터는 '객체'이다.
하지만 전사와 마법사 도적 모두 가지고 있는 공통된 특징이 있다. 레벨, 체력바 ... 와 같은 공통된 형상을 뽑아낸 뒤 "캐릭터" 라는 "추상클래스"에 넣을 수 있을 것이다.
그리고 마찬가지로 추상메서드라는 개념도 존재한다. 모든 클래스는 '공격'을 할 수 있다. 따라서 '캐릭터' 라는 추상클래스에 공격 메서드를 선언할 수도 있다.
또한 추상클래스는 직접적인 인스턴스를 뽑아내지 못한다. 반드시 "직업" 을 가진 구체적인 클래스만 인스턴스를 뽑을 수 있다.
'Front end > TypeScript' 카테고리의 다른 글
[TypeScript] 다형성과 제네릭 (2) | 2024.10.27 |
---|---|
[TypeScript] unknown, void, never 타입에 대해서 알아보자 (3) | 2024.10.26 |
[TypeScript] Readonly , Tuple에 대해서 알아보자 (0) | 2024.10.26 |
[TypeScript] 변수와 타입, 함수 생성 (1) | 2024.10.24 |
댓글