카테고리 없음
클래스: 정적 프로퍼티, 메서드 (static)
하이고니
2023. 2. 22. 16:37
정적 속성과 메서드를 사용하여 클래스의 인스턴스에서 접근할 수 없는 속성과 메서드를 클래스에 추가할 수 있다.
(의문1: private과는 뭐가 다른가?)
예를 들어 Math.PI
에 접근하면 PI의 값을 알 수 있고, Math.pow
함수를 이용하면 무언가를 제곱할 수 있지만,
이들은 Math
의 인스턴스에서는 접근할 수 없는 메서드와 속성이므로 굳이 new Math
를 호출할 필요가 없다. 아니 호출해도 작동하지 않는다. 클래스 자체에서 속성과 메서드에 접근해야 한다. 이처럼 Math는 그룹화 메커니즘의 네임스페이스와 같은 역할을 한다.
직접 만든 클래스에도 정적 메서드를 추가할 수 있다.
Department 클래스에 employees를 생성하는 메서드를 입력해보자.
createEmployee를 정적 메서드(클래스를 인스턴스화하지 않고 접근할 수 있는 메서드)로 만들기 위해서는 static
키워드를 붙여야 한다.
정적 프로퍼티를 추가할 수도 있다.
정적 프로퍼티를 정적이 아닌 부분에서 사용하려고 하면
그런 프로퍼티는 존재하지 않는다는 메시지가 뜬다. this
는 클래스를 기반으로 생성된 인스턴스를 참조하기 때문이다.
정적 프로퍼티는 인스턴스에서 유효하지 않다.
그리고나서 Department.fiscalYear로 접근할지의 여부를 물어보는데,
이처럼 클래스 내에서 정적 속성이나 메서드를 사용하고자 한다면 this가 아닌 클래스 이름을 사용해야 한다.