#4.0 Classes
#4.1 Recap
Class
class Player {
// 선언만해도 초기화를 해준다.
// this.firstName = firstName; 안해줘도
constructor(
private firstName: string,
private lastName: string,
public nickname: string
) {}
}
const jjw = new Player('jung', 'jaewoong', '재웅');
jjw.firstName; // 접근불가(private) - error
jjw.lastName; // 접근불가(private) - error
jjw.nickname; // 접근가능(public)
TypeScript
복사
abstract class
•
추상클래스는 다른 클래스가 상속받을 수 있는 클래스이다.
•
직접 새로운 인스턴스를 만들 순 없다.
abstract class User {
constructor(
private firstName: string,
private lastName: string,
public nickname: string
) {}
}
// 추상클래스 User는 상속받을 수만 있고, 직접적으로 인스턴스를 만들지는 못한다.
class Player extends User {
}
// 타입스크립트가 추상클래스의 인스턴스를 만들 수 없다고 경고한다.
const jjw = new User('jung', 'jaewoong', 'jjw'); //error
TypeScript
복사
abstract method
•
추상메소드는 추상클래스를 상속받는 모든 것들이 구현해야하는 메소드를 의미한다.
abstract class User {
constructor(
private firstName: string,
private lastName: string,
public nickname: string
) {}
// call signature만 적는다.
// 구현체는 적지 않는다.
abstract getFirstName(): void
}
class Player extends User {
//getFirstName을 구현하지 않아서 오류가 난다.
}
TypeScript
복사
protected로 선언하면 클래스밖에서 접근할 수 없지만 해당 클래스를 상속받은 자식 클래스에서는 접근할 수 있다.