abstract
는 상위 클래스에서 하위 클래스에서 선언할 수 있는 추상적인 state, method를 만드는 것이다.
예를 들면 행성이라는 class에 대해 항성과 대기라는 추상 클래스를 선언하면
extends를 통해 class를 내려받은 지구라는 class는 항성과 대기라는 추상 클래스를 선언해야만 한다.
abstract class star{
public name:string | null=null;
public atmosphere:string | null=null;
private radius:number = 2000;
abstract fixedStar:string; // 추상 state(model?)
abstract changeName(name:string):void; // 추상 method
abstract changeEnvironment(atmosphere:string):void; // 추상 method
}
class earth extends star {
fixedStar:string='Sun';
changeName(name:string):void{
this.name=name;
}
changeEnvironment(atmosphere:string):void{
this.atmosphere=atmosphere;
}
}
let home = new earth();
home.name='home';
home.atmosphere='O2'
console.log('home: ',home);
home.changeName('our home');
home.changeEnvironment('CO2');
console.log('home: ',home);
// console
home: earth {
name: 'home',
atmosphere: 'O2',
radius: 2000,
fixedStar: 'Sun'
}
home: earth {
name: 'our home',
atmosphere: 'CO2',
radius: 2000,
fixedStar: 'Sun'
}