728x90
반응형
1. 추상클래스
- 인스턴스화를 할 수 없는 클래스
- 기본은 부모클래스가 하지만, 핵심 기능은 자식클래스에 위임하는 것
- 상속을 통해 자식클래스에서 메서드를 각각 구현하기
abstract class Shape {
abstract getArea(): number; // 추상 함수 정의!!!
printArea() {
console.log(`도형 넓이: ${this.getArea()}`);
}
}
class Circle extends Shape {
radius: number;
constructor(radius: number) {
super();
this.radius = radius;
}
getArea(): number { // 원의 넓이를 구하는 공식은 파이 X 반지름 X 반지름
return Math.PI * this.radius * this.radius;
}
}
class Rectangle extends Shape {
width: number;
height: number;
constructor(width: number, height: number) {
super();
this.width = width;
this.height = height;
}
getArea(): number { // 사각형의 넓이를 구하는 공식은 가로 X 세로
return this.width * this.height;
}
}
const circle = new Circle(5);
circle.printArea();
const rectangle = new Rectangle(4, 6);
rectangle.printArea();
2. 인터페이스
- 객체가 가져야하는 속성과 메서드를 정의
- 추상클래스와 차이
(1) 구현부 제공 여부 : 추상클래스 (기본구현 제공) / 인터페이스(객체 구조만 정의)
(2) 상속 메커니즘 : 추상클래스 (단일 상속) / 인터페이스(다중 상속 -> 하나의 클래스로 여러 인터페이스 구현)
(3) 구현 메커니즘 : 추상클래스 (반드시 추상함수 구현 필요) / 인터페이스(정의된 모든 메서드 전부 구현)
[사용]
=> 기본구현 제공 & 상속을 통해 확장 = 추상 클래스
=> 특정 구조를 준수하도록 강제 = 인터페이스
끝.
반응형
'TypeScript' 카테고리의 다른 글
TypeScript : 도서관 프로그램 구현 (0) | 2023.12.13 |
---|---|
TypeScript : S.O.L.I.D (0) | 2023.12.13 |
TypeScript : 상속 | 서브타입과 슈퍼타입 | upcasting과 downcasting (0) | 2023.12.13 |
TypeScript : 클래스 (public, private, protected) (0) | 2023.12.13 |
TypeScript : 카페 프로그램 구현 (0) | 2023.12.13 |