추상클래스란?
추상클래스는 실체클래스의 공통적인 부분을 추출해 어느정도 규격을 잡아놓은 추상적인 클래스이다. 그래서 실체클래스 실제 객체를 생성할 정도의 구체성을 가지는 반면! 추상클래스는 아직 메서드와 내용이 추상적이기 때문에 객체를 생성할 수 없게 만들었다.
객체를 직접 생성할 수 있는 클래스를 실체클래스라고 하는데, 실체클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상클래스라고한다. 여기서 추상클래스와 실체클래슨느 상속적인 관계를 가지고 있다.
포인트 3개는 꼭 알자.
1. 추상클래스는 뭐? 실체클래스의 공통적인 부분(변수,메서드)를 추출해서 선언한 클래스
2. 추상클래스는 객체를 생성할 수 없다! 아직은 실체성이 없고 구체적이지 않기 때문에!
3. 추상클래스와 실체클래스는 어떤관계? 상속관계!
추상 클래스는 자신의 속성이나 메서드 앞에 abstract를 붙여 나를 상속하는 다른 클래스에서 이 속성이나 메서드를 구현하게 합니다.
abstract class 클래스 이름 {
abstract 속성 이름: 속성 타입
abstract 메서드이름() {}
<<Person5.ts>>
abstract class AbstractPerson5 {
abstract name: string;
constructor(public age?: number) {}
}
다음 AbstractPerson5는 name 속성 앞에 abstract가 붙었으므로 new 연산자를 적용해 객체를 만들 수 없습니다.
객체지향 언어는 부모 클래스를 상속받는 상속 클래스를 만들 수 있는데, 타입스크립트는 다음처럼 extends 키워드를 사용해 상속 클래스를 만듭니다.
class 상속클래스 extends 부모클래스 {...}
<<Person5.ts>>
abstract class AbstractPerson5 {
abstract name: string;
constructor(public age?: number) {}
}
class Person5 extends AbstractPerson5 {
constructor(public name: string, age?: number) {
super(age);
}
}
let jack5: Person5 = new Person5("jack", 32);
console.log(jack5);