[TypeScript] Public / Private / Protected / Static

Dorong·2022년 12월 29일
0

TypeScript

목록 보기
14/15

객체지향 문법 in TypeScript

  • 객체를 찍어내는 기계와 같은 역할을 하는 class 내부 변수들과 함수들
  • 이에 대한 접근 권한을 설정하는 객체지향 문법 TypeScript에서 사용할 수 있다!!

1. Public

  • class로부터 생성된 모든 instance에서 접근 및 수정이 가능
  • 기본 설정이라서 사실 생략해도 무방하다

    class Human {
       public name : string;
       constructor(name : string){
           this.name = name;
       public sayHi(){ console.log('hi');
    }
    let human1 = new Human('Yu');
    human1.name = 'Kim'   // 외부에서 접근 및 수정 가능


2. Private

  • class로부터 생성된 모든 instance 객체에서 접근 및 수정할 수 없고,
  • 클래스 상속에도 제외
  • 본인 클래스 내부에서는 사용 및 값 변경 등 가능

    class Human {
       private name : string;
       constructor(name : string){
           this.name = name;
       }
       private sayHi(){ console.log('hi');
    }
    let human2 = new Human('Yu');
    human2.name = 'Kim'   // 오류 => 외부에서 접근 및 수정 ❗️불가능❗️
    human2.sayHi(); // 이것 역시 오류!!

  • 만약 private 값을 꼭 수정해야만 한다면? => 클래스 내부에 값을 변경하는 함수를 만들어 외부에서 사용

3. Protected

  • class로부터 생성된 모든 instance 객체에서 접근 및 수정할 수 없으나,
  • 클래스 상속에는 따라감

    class Dad {
       private firstName = 'ky';
       protected lastName = 'Yu';
    }
    class Son extends Dad {
       printName(){
           // console.log(this.firstName) ==> 읽을 수 없음(private)
           console.log(this.lastname); // ==> 읽어올 수 있음(protected)
    }


4. Static

  • 다른 접근제한자와 달리 instance가 아닌 Class에 직접 부여하는 효과
  • 자식 instance에 물려주지 않음
  • but 상속에는 잘 따라옴
  • public / private / protected 와 함께 사용가능하며, 의미도 동일하게 붙음

    class Class01 {
       static value1 = 10;
       value2 = 20;
    }
    let instance01 = new Class01();
    // value1에 접근하려면
    // instance01.value1    => 오류 : 접근 불가
    Class01.value1 // 이렇게 class에서 직접 접근





🌟 잘못된 부분에 대한 말씀은 언제나 저에게 큰 도움이 됩니다. 🌟
👍 감사합니다!! 👍

profile
🥳믓진 개발자가 되겠어요🥳

0개의 댓글