제어자(modifier) 란?
클래스, 변수, 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다.
하나의 대상에 여러 제어자를 같이 사용 가능하다. (접근 제어자 제외)
순서는 상관 없으나, 주로 접근 제어자를 제일 왼쪽에 선언한다.
public static void main(String[] args) {}
일반 제어자
static - 클래스의, 공통적인
메서드, 멤버변수, 초기화 블럭에 사용이 가능하다. 클래스 관련의 것들은 static 제어자를 붙인다.
final - 마지막의, 변경될 수 없는
클래스, 메서드, 멤버변수, 지역변수에 사용이 가능하다. 생성자를 이용하여 final 멤버변수를 초기화할 수 있다.
abstract - 추상의, 미완성의
접근 제어자(access modifier)
접근 제어자는 해당 멤버 또는 클래스에 접근이 가능한 범위를 제한하는 역할을 한다.
- private : 같은 클래스 내에서만 접근 가능
- default : 같은 패키지 내에서만 접근 가능
- protected : 같은 패키지 내에서, 다른 패키지의 자손 클래스에서 접근이 가능
- public : 접근 제한 없음
캡슐화(encapsulation)
접근 제어자를 사용하는 이유는 패스워드처럼 클래스 내부에 선언된 데이터를 보호하기 위함이다.
또한, 클래스 내부적으로만 사용되는 멤버들을 감추기 위해서도 사용한다.
캡슐화 예시 - Getter, Setter
public class Capsule {
private String id;
private int password;
public String getId() {
return id;
}
public int getPassword() {
return password;
}
public void setId(String Id) {
this.id = id;
}
public void setPassword(int password) {
this.password = password;
}
}
클래스 내부에서만 값에 접근할 수 있도록 변수를 private 처리하고, 해당 값은 public으로 선언된 getter, setter 메서드로 지정하고 불러와 사용할 수 있도록 설정할 수 있다.
'Java > 자바의 정석 3판' 카테고리의 다른 글
객체지향 프로그래밍(2) - 추상클래스와 인터페이스 (0) | 2023.01.25 |
---|---|
객체지향 프로그래밍(2) - 다형성 (0) | 2023.01.25 |
객체지향 프로그래밍(2) - 오버라이딩(Overriding) (0) | 2022.12.26 |
객체지향 프로그래밍(2) - 클래스 간의 관계 설정 (1) | 2022.12.26 |
객체지향 프로그래밍(1) - 변수의 초기화 (0) | 2022.12.24 |