TypeScript)접근지정자

Songss·2025년 1월 13일

TypeScript

목록 보기
9/10

접근지정자

class Employee {
  // 직원 정보
  empName: string;
  age: number;
  empJob: string;

  constructor(empName: string, age?: number, empJob?: string) {
    this.empName = empName;
    this.age = age;
    this.empJob = empJob;
  }

  printEmp = (): void => {
    console.log(`${this.empName} 의 나이는 ${this.age} 이고, 직업은 ${this.empJob} 입니다.`);
  };
}

// Employee 인스턴스 생성
const emp1 = new Employee('seungsoo', 32, 'develop');

// printEmp() 호출
emp1.printEmp(); // seungsoo 의 나이는 32 이고, 직업은 develop 입니다

emp1.empName = 'SONG'; 
emp1.printEmp(); // SONG 의 나이는 32 이고, 직업은 develop 입니다.

위 코드를 마지막 2줄의 코드를 확인…
emp1.empName 으로 emp1이라는 객체의 프로퍼티를 접근할 수 있고 값을 변경할 수 있다.

접근해서 값이 변경하다는 건 편의성에서는 좋을 수 있습니다.

그러나 보안성 측면에서는 쉽게 값이 변경됨으로 그리 좋다고 할 수 없습니다.

그리하여 코드를 만드는 사람은 객체의 속성별외부에서 접근 가능/불가능하도록 설정해줄 필요가 있습니다.

수정한 코드

class Employee {
  // 직원 정보
  private empName: string;
  public age: number;
  protected empJob: string;

  constructor(empName: string, age?: number, empJob?: string) {
    this.empName = empName;
    this.age = age;
    this.empJob = empJob;
  }

  printEmp = (): void => {
    console.log(`${this.empName} 의 나이는 ${this.age} 이고, 직업은 ${this.empJob} 입니다.`);
  };
}

// Employee 인스턴스 생성
const emp1 = new Employee('seungsoo', 32, 'develop');

// printEmp() 호출
emp1.printEmp();

// 오류 'empName'속성은 private이며 'Employee'클래스 내에서만 액세서 할 수 있습니다.
emp1.empName = 'SONG';  
emp1.printEmp();

위 코드 상단, 멤버변수에 private public protected 키워드를 사용해서 선언합니다.

private : 외부 접근 불가능

publice : 외부 접근 가능

protected : 외부 접근 불가능 , 단 자식 클래스는 접근 가능

0개의 댓글