추상 클래스(Abstract class)
다른 클래스들이 파생될 수 있는 기초 클래스
- 직접 인스턴스화 할 수 없다.
- abstract 키워드는 추상 클래스나 추상 메소드를 정의하는 데 사용된다.
- 이름과 같이 추상적이기 때문에 직접적인 사용은 불가능하다. 대신 사용하고자 하는 class에서 추상클래스를 상속받아서 사용이 가능하다.
- abstract 키워드가 붙으면 상속 받은 클래스에서 해당 메서드를 반드시 구현해야한다.
abstract class Developer {
abstract coding(): void;
drink(): void {
console.log('drink sth');
}
}
class FrontEndDeveloper extends Developer {
coding(): void {
console.log('develop web');
}
design(): void {
console.log('design web');
}
}
const dev = new Developer(); // error: cannot create an instance of an abstract class
const josh = new FrontEndDeveloper();
josh.coding(); // develop web
josh.drink(); // drink sth
josh.design(); // design web
abstract class Parent {
// 템플릿 메소드 : 자식에서 공통적으로 사용하는 부분(someMethod)
public do() {
console.log("Parent에서 실행 - 상");
this.hook(); // 훅 메소드 : Child에서 구현해야 할 부분
console.log("Parent에서 실행 - 하");
}
abstract hook(): void
}
class Child extends Parent {
hook(): void {
console.log("Child");
}
}
const child = new Child();
child.do();
// 실행 결과
// Parent에서 실행 - 상
// Child
// Parent에서 실행 - 하