제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다.
public , static 같은 키워드들이 여기에 해당된다. 이러한 제어자에는 클래스의 접근 범위와 관련된 접근 제어자 (access modifier) 와 일반 제어자가 있다.
- 접근 제어자 : public, protected, default, private
- 일반 제어자 : static, final, abstract, native, transient, synchronized, volatile, strictfp
이들 제어자는 상황에 따라 클래스, 메서드, 변수 등에 사용하며 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근 제어자는 단 하나만 사용 할 수 있다.
static
클래스 혹은 공통적인 이라는 의미를 가지고 있다.
클래스 변수나 메서드 의 선언에 사용할 수 있다.
< 특징 >
- 멤버 변수와 메서드, 초기화 블럭은 인스턴스를 생성하지 않고도 사용할 수 있다.
- 모든 인스턴스에 공통적으로 사용되는 클래스 변수
- 클래스가 메모리에 로드될 때 생성된다.
- 인스턴스 생성 없이 클래스이름.메서드명() 으로 사용 가능한 static 메서드 선언.
final
변경할 수 없다는 의미를 가지고 있으며 변수나 메서드, 클래스에 사용할 수 있다.
- 메서드에 사용 할 경우 오버라이딩을 통해 재정의 할 수 없다.
- 변수에 사용할 경우 상수가 된다.
- 클래스에 사용할 경우 더이상 상속을 할 수 없는 클래스가 된다.
abstract
추상 클래스와 추상 메서드 선언할 때 사용된다.
- 메서드 선언부만 작성하고 실제 수행 내용은 구현하지 않은 추상 메서드를 선언하는데 사용한다.
- 추상 메서드가 있는 클래스는 반드시 추상 클래스로 선언되어야 한다.
접근 제어자
- public : 접근 제한이 없음.
- protected : 같은 패키지 내에서 혹은 다른 패키지의 자손클래스에서 접근이 가능.
- default : 같은 패키지 내에서만 접근이 가능.
- private : 같은 클래스 내에서만 접근이 가능.
지정되어 있지 않다면 default가 된다.
- 클래스 : public, default
- 메서드, 멤버변수 : public, protected, default, private
- 지역변수 : 지역변수 자체가 해당 블럭에서만 사용가능하므로 접근제어자의 의미가 없음.
캡슐화와 접근 제어자
접근 제어자를 사용하면 클래스 외부로부터 접근을 제어할 수 있으므로, 객체를 캡슐화 할 수 있다.
예를 들어 private 의 경우 동일 클래스 내에서만 접근이 가능하므로 멤버 필드에 private을 선언하면 해당 변수를 클래스 외부에서 접근할 수 없게 된다.
이 경우 클래스 외부에 해당 멤버의 접근을 제공하기 위해 getter와 setter 메서드를 제공하는 방식을 사용한다.
메서드 생성 규칙은 멤버타입 getXxx(), setXxx(멤버타입 인자) 형식이다.
개발 도구에서 private 멤버 변수 들에 대해 자동으로 메서드를 생성을 제공하는 기능이 있다.
private int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
'java' 카테고리의 다른 글
문자열 다루기? (0) | 2021.01.21 |
---|---|
java 예외 처리 (0) | 2021.01.20 |
오버로딩과 오버라이딩 (0) | 2021.01.19 |
자바 메모리 관리 ? (0) | 2021.01.19 |
4주차 제어문 (0) | 2021.01.12 |