
목표
Typescript 접근제한자에 대한 개념을 정리합니다.
접근제한자란?
Typescript에는 Javscript와 다르게 접근제한자 라는 개념을 지원합니다.
접근제한자를 사용하여 클래스 외부에서 특정한 메서드나 필드에 대한 접근범위를 지정할 수 있습니다.
접근제한자의 종류
public
클래스 내/외부 어디서나 접근할 수 있으며 따로 명시하지 않아도 적용되는 기본값입니다.
private
해당 클래스 내부에서만 접근가능하도록 하는 접근제한자입니다.
protected
해당 클래스 내부 혹은 상속받은 서브클래스에서만 접근가능하도록 하는 접근제한자입니다.
접근제한자 예제코드
class Person {
constructor(
public name: string,
private age: number,
protected address: string
) {}
// public 메서드: 모든 클래스에서 접근 가능
public printName(): void {
console.log("Name: " + this.name);
}
// private 메서드: 같은 클래스에서만 접근 가능
private printAge(): void {
console.log("Age: " + this.age);
}
// protected 메서드: 같은 패키지 또는 서브클래스에서 접근 가능
protected printAddress(): void {
console.log("Address: " + this.address);
}
// public 메서드를 통해 private 필드에 접근하고 설정하는 방법
public setAge(age: number): void {
this.age = age;
}
// public 메서드를 통해 private 필드 값을 가져오는 방법
public getAge(): number {
return this.age;
}
}
class Main {
public static main(): void {
const person = new Person("John Doe", 30, "123 Main St");
// public 필드 접근
console.log(person.name);
person.printName();
// private 필드 접근 불가 - 컴파일 에러 발생
// console.log(person.age);
// private 필드 접근을 위해 public 메서드 사용
person.setAge(35);
console.log("Age: " + person.getAge());
// protected 필드 접근 불가 - 컴파일 에러 발생
// console.log(person.address);
// protected 메서드 접근 불가 - 컴파일 에러 발생
// person.printAddress();
}
}
Main.main();
정리
public
: default
: 클래스 내/외부 ( 자식클래스, 클래스 인스턴스 ) 모두 접근가능
private
: 해당 클래스 내부에서만 접근가능
protected
: 해당클래스 내부와 상속받은 서브클래스에서 접근가능
반응형