minstudio

추상 클래스 (Abstract Class)와 인터페이스

인터페이스(Interface)가 객체의 껍데기 형태만 100% 강제한다면, 추상 클래스(Abstract)는 "일부 공통 기능은 미리 구현해서 물려주고, 일부 핵심 기능만 자식들에게 강제로 구현시키는" 반자동 템플릿 역할을 합니다.

📐 추상 클래스 (반자동 템플릿) 📐 추상 클래스 (청사진) "이 도면대로 건물을 지으렴." 기둥(메서드)은 세워뒀고 지붕 모양(추상 메서드)은 네가! 상속 🏠 자식 클래스 (실제 건물) 공통 기능은 그대로 물려받고 비워진 핵심 기능(추상 메서드)을 강제로 무조건 구현!
// "동물"이라는 막연한 개념을 직접 객체(new)로 만들지 못하게 미완성 설계도로 만듦
abstract class Animal {
    name: string;
    constructor(name: string) { this.name = name; }
    
    // 소리를 내긴 하는데, 무슨 소리를 낼지는 자식들이 알아서 구현해라! (추상 메서드)
    abstract makeSound(): void; 
}

class Dog extends Animal {
    // 부모가 물려준 미완성 숙제(abstract)를 무조건 구현해야만 에러가 안 남!
    makeSound() {
        console.log("멍멍!");
    }
}
추상 클래스 (Abstract Class)와 인터페이스 | Minstudio