JS' 공부흔적

[TypeScript] 클래스의 접근 제한자 본문

TypeScript

[TypeScript] 클래스의 접근 제한자

이준수 2022. 1. 26. 05:22

Typescript에서의 클래스에는 C++, 자바처럼 다른 객체지향 언어와 마찬가지로 접근 제한자가 존재한다.


public

해당 클래스의 내부와 자식 클래스 및 클래스 인스턴스에서도 모두 접근 가능하다.

class Car {
    name: string = "car"; //name 앞에 public을 명시하지 않아도 default가 public임
    color: string;
    constructor(color: string) {
        this.color = color;
    }
}

class BMW extends Car {
    constructor(color: string) {
        super(color); //파생 클래스는 무조건 super를 써야함
    }
     showName() {
        console.log(this.name); //public이라 사용 가능
    }
}

const ex = new BMW("black");
console.log(ex.name); //car

private

해당 클래스 내부에서만 접근 가능하다.

class Car {
    #name: string = "car"; // name 앞에 private를 붙이는 것과 동일
    color: string;
    constructor(color: string) {
        this.color = color;
    }
}

class BMW extends Car {
    constructor(color: string) {
        super(color); //파생 클래스는 무조건 super를 써야함
    }
     showName() {
        console.log(this.name); //error
    }
}

const ex = new BMW("black");
console.log(ex.name); //error

protected

해당 클래스의 내부 및 자식 클래스에서만 접근 가능하다.

class Car {
    protected name: string = "car"; //protected 선언
    color: string;
    constructor(color: string) {
        this.color = color;
    }
}

class BMW extends Car {
    constructor(color: string) {
        super(color); //파생 클래스는 무조건 super를 써야함
    }
     showName() {
        console.log(this.name); //자식 클래스 내부에서 사용 가능
    }
}

const ex = new BMW("black");
console.log(ex.name); //error
728x90
반응형