ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TypeScript] Public, Protected , Private 란?
    공부/TypeScript 2024. 3. 28. 16:30

    • Java를 배운 사람이라면 친숙한 녀석들이다.
    • 클래스 기반 객체지향 언어에서 지원하는 접근 제한자(Access modifier)를 뜻 한다.
    • 기본적으로 따로 명시하지 않으면 TypeScript에서는 그동안 Public으로 지정됐을 것이다.

     

    1. 정의

    • Public : TypeScript Class 기본 접근 제한자, 선언 시 해당 멤버는 해당 Class  내부/외부에서 모두 접근이 가능하다.
    • Private : 선언 시 해당 멤버는 해당 Class  "내부"에서만 접근이 가능하다. (외부 접근 불가)
    • Protected : 선언 시 해당 멤버에 대한 접근을 Class  내부 및 상속한 하위(자식)클래스에서만 접근허용

     

    특징

     

    • static : ES6 클래스에서 Static Method를 의미한다.
    • Static 멤버는 클래스 자체에 연결되어 클래스의 모든 인스턴스가 공유하는 속성이나 메서드이다.
    • 정적메소드는 Class의 instance가 아닌 Class 이름으로 호출된다.
    • static 키워드는 부모에서만 사용가능한 변수를 만드는 것이다.
      자식에게 물려주고 싶지 않은 변수에는 static을 적용하면 된다. 

    2. 예시

    • Public, Private 예시
       
    class Car { 
          name = 'Tesla';
          //private 속성을 선언하면 data의 변경은 불가능해지만, 데이터를 조회는 가능하다.
          private BrandName :string = 'KIA';
         constructor(a : string) {
          //constructor로 만드냐 결과는 같지만 cons는 파라미터 지정이 가능해 
          //새로운 오브젝트를 뽑을때 파라미터 지정가능 
          this.name = a;
        }
        public Namechange(){
          this.BrandName = 'Hyundai';
        }
      }
    
      let company = new Car('Hyundai')
      company.name // 수정가능 public
      company.BrandName // 수정불가함 오류발생 private
      
      //수정하려면 미리 내부 함수를 만들고 함수를 사용해서 밖에서 수정한다.
      company.Namechange();
      console.log(company);

     

    • public 키워드를 쓰면 this. 생략이 가능하다.
      class Test {
        constructor(public name :string) {
    
        }
      }
    
      let a = new Test('K');

     

    • static 예시
    //예시 1. static 데이터 상속시키기 
    class tire {
      //static을 쓰면 부모만 사용가능하며, 자식에게 상속되지 않는다.
      //하지만 extends를하면 static 붙은것도 상속이 된다. static은 public 등과 동시 사용가능 
      static size = '24 inch';
    }
    class Car extends tire {
      //Car 는 tire를 상속했기 때문에 size 데이터를 이용/수정이 가능함
      model = 'sonata';
      color = 'gray';
      tire = Car1.size;
    }   
    
    let Car_data = new Car();
    console.log(Car_data);
    
    //예시 2. Static 데이터 수정하는 법 ( 그리고 기타 특징)
    class Attacker { 
      name = 'Sombra'
      left = 'Shoot'; 
      right = 'Hacking';
      //shift는 자식에게 전달되지 않는다. 
      static shift = 'Virus';
      e = 'Translocator';
      q = 'EMP';
    
    }
    
    Attacker.shift = ('Stealth');  // static 데이터는 다음과 같이 수정이 가능하다.
    var 솜브라 = new Attacker();
    //따라서 조회 시 shift 데이터는 출력되지 않는다.
    console.log(솜브라);
Designed by Tistory.