본문 바로가기

Java/자바의 정석 3판

객체지향 프로그래밍(2) - 접근 제어자

제어자(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 메서드로 지정하고 불러와 사용할 수 있도록 설정할 수 있다.