TypeScript에서의 OOP 추상 클래스
부모 클래스에 공통 속성과 메서드를 포함하고, 그로부터 자식 클래스가 상속받는 상황이 있습니다.
이때, 자식 클래스의 객체는 생성하지만 부모 클래스의 객체는 생성하지 않는 경우가 있을 수 있습니다. 부모 클래스는 단지 공통 속성과 메서드를 그룹화하는 데만 필요합니다.
이 경우, 부모 클래스 객체 생성을 명시적으로 금지하기 위해
추상적으로 선언할 수 있습니다.
이는 abstract 키워드를 사용하여 수행됩니다.
예제를 살펴보겠습니다. 우리의 User 클래스를 가져와 추상적으로 선언해 보겠습니다:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
User를 상속하는 Student 클래스를 만들어 보겠습니다:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
User를 상속하는 Employee 클래스를 만들어 보겠습니다:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
기하학적 도형을 나타내는 추상 클래스 Figure를 생성하세요.
둘레와 면적에 대한 속성을 포함하게 하세요.
Figure 클래스를 상속하는 Square 클래스를 만드세요.
Figure 클래스를 상속하는 Rectangle 클래스를 만드세요.