ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • protected, static
    Typescript 2022. 6. 17. 12:54

    private와 비슷한 protected는  똑같이 class내에서 사용하며 확장성을 좀 더 늘렸다.

    예를 들면,

    class User {
    	private x = 10;
    }
    
    class NewUser extends User {
    
    }

    이렇게 쓰면 NewUser에선 x를 가져다 쓸 수 없다. 하지만 protected를 쓰면 extends된 class내에서도 사용가능하다.

    즉, private는 클래스 내에서, protected는 클래스와 extends된 class까지 가능하다. 역시 둘다 자식에선 사용 불가능하다.

     

    이제, static키워드를 알아보자.

    class User {
    	static x = 10;
    	y = 20;
    }
    
    let 자식 = new User();

    위처럼 쓰고, 자식을 찍어보면 y값만 나오게 된다. static키워드를 붙이면 부모 class내에 직접 부여되며, 자식들이 가져다 쓸 수 없게 한다. 즉, 물려주지 않는다.

    그래서 x를 사용하려면 User.x이렇게 부모클래스만 쓸 수 있다.

    그리고 static은 public,private,protected와 같이 쓸 수 있다. (ex public static x = 20;)

     

    이제 활용해보자.

    class User { 
      static skill = 'js'; 
      intro = User.skill + '전문가입니다'
    }
    
    var 철수 = new User();
    console.log(철수);
    
    User.skill = 'python';
    var 민수 = new User();
    console.log(민수);

    위처럼 입력하면 철수는 js전문가 민수는 python전문가가 된다. 이런 중요한 변수들은 자식에서 수정이 불가능하게 static키워드를 사용해서 부모클래스에서만 사용가능하게 할 수 있다.

    사실 숨기고 싶으면 private나 protected키워드가 좀 더 낫다.

    댓글

Designed by Tistory.