1. 제어자(modifier)란?
제어자(modifier)는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다.
제어자의 종류
- 접근 제어자: public, protected, default, private
- 그 외: static, final, abstract 등
제어자는 하나의 대상에 여러 제어자를 조합하여 사용할 수 있다. 여기서 대상은 클래스나 멤버변수, 메서드를 말한다.
단, 접근 제어자는 한 번에 하나만 사용할 수 있다. 즉, 하나의 대상에 public과 private을 함께 사용할 수 없다.
1. static 제어자
static은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 인스턴스변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수(static멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다. 그 이유는 하나의 변수를 모든 인스턴스가 공유하기 때문이다.
static이 붙은 것은 오로지 클래스에만 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있다. 그렇기 때문에 static메서드 내에서 인스턴스 멤버를 직접 사용할 수 없다.
인스턴스 멤버를 사용하지 않는 메서드는 static메서드로 선언하는 것을 고려해보도록 하자. 가능하다면 static메서드로 하는 것이 인스턴스를 생성하지 않고 호출할 수 있어 더 편리하고 속도도 빠르다.
2. 접근 제어자(access modifier)
접근 제어자(access modifier)는 멤버 또는 클래스에 사용되어, 해당하는 멤버 또는 클래스를 외부에서 접ㄱ느하지 못하도록 제한하는 역할을 한다.
접근 제어자가 사용될 수 있는 곳 - 클래스, 멤버변수, 메서드, 생성자
- private : 같은 클래스 내에서만 접근이 가능하다.
- default : 같은 패키지 내에서만 접근이 가능하다.
- protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.
- public : 어디서든 접근 가능하다.
제어자 | 같은 클래스 | 같은 패키지 | 자손 클래스 | 전체 |
public | O | O | O | O |
protected | O | O | O | |
default | O | O | ||
private | O |
접근 범위가 넓은 순 public > protected > default > private
* 따로 접근 제어자를 붙이지 않으면 default임을 뜻한다.
3. 접근 제어자를 쓰는 이유
객체지향개념의 대표적인 특징(캡슐화, 다형성, 상속) 중 하나인 캡슐화(encapsulation)를 위해 필요하다. 캡슐화는 ①중요한 데이터를 보호하는 것으로 외부로부터 데이터를 보호하고, ②외부에는 불필요하면서 내부적으로만 사용되는 부분을 감추는 것이다.
'JavaScript' 카테고리의 다른 글
[JAVA] 다형성(polimorphism)에 대해서 (0) | 2021.09.10 |
---|---|
[Java] 상속 (inheritance)에 대해서 (0) | 2021.09.02 |
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding) 차이 (0) | 2021.09.01 |
[Java] Object 클래스의 toString() 메서드 (0) | 2021.08.31 |
[JavaScript] 알아두면 유용한 배열(Array) APIs (0) | 2021.08.13 |