카테고리 없음

클래스: 정적 프로퍼티, 메서드 (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가 아닌 클래스 이름을 사용해야 한다.