어디에서나 자유롭게 접근 가능
클래스 내부에서 접근, 인스턴스 접근 가능 ⭕
생략가능한 접근 제한자이다.
범위: 속성, 메소드
public name: string;
내 클래스 내부, 자식 클래스 내부에서 접근 가능⭕
인스턴스 접근 불가능❌
범위: 속성, 메소드
내 클래스 내부 접근 가능 ⭕
자식 클래스 내부, 인스턴스 접근 불가능 ❌
범위:
인스턴스 멤버에 static
을 붙인 필드 및 메소드는 정적 필드, 정적 메소드가 된다.
class ClassAnimal {
// 정적 멤버 변수 선언
// this나 instance로 접근할 수 없다.
// class명.변수명
static eye=2;
name: string;
constructor(name:string) {
this.name= name;
}
}
let cat= new ClassCat("reo");
로 선언했다면
cat.eye ❌ // 객체로는 접근할 수 없다.
ClassAnimal.eye ⭕ // class에 접근해야한다.
abstract
를 붙인 클래스 및 메소드는 추상 클래스, 추상 메소드가 된다.
1️⃣ abstract를 붙인 클래스 생성
abstract class 클래스명{
name:string;
constructor(name:string){
this.name=name;
}
abstract 메소드명():void
}
2️⃣ 1을 상속받는 클래스 생성
class Teacher extends Person{
work(): void {
console.log(`직업은 ${this.name}입니다.`);
}
}
추상 클래스를 상속 받으면 그 클래스의 추상 메소드를 반드시 작성해주어야한다.
상속만 가능하고 인스턴스(객체)를 생성할 수 없다.
메소드의 이름만 선언하고 구체적인 기능은 상속받는 쪽에서 구현한다.
상속받는 클래스는 모두 다 같은 이름의 메소드를 가지며
구현은 각각 다르게 할 수 있다.