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 : 외부 접근 불가능 , 단 자식 클래스는 접근 가능