09009

[Java] 접근 제어자 본문

Back-End/JAVA
[Java] 접근 제어자
09009

접근 제어자

  멤버변수 또는 클래스에 사용되어 해당하는 멤버변수 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할 수행

 

제어자 같은 클래스 같은 패키지 자손 클래스 전체
public O O O O
protected O O O  
(default) O O    
private O      

  public : 접근 제한 x

protected : 같은 패키지 내에서, 그리고 상속 관계에 있는 다른 패키지의 자손 클래스에서 접근 가능

default : 같은 패키지 내에서만 접근 가능

private : 같은 클래스 내에서만 접근 가능

 

 

예제 소스코드

class Time {
    private int hour; // private int hour, minute, second; 로 짧게 선언 가능
    private int minute;
    private int second;

    Time(int hour, int minute, int second) {
        setHour(hour); setMinute(minute); setSecond(second);
    }

    public int getHour() {
        return hour;
    }
    public void setHour(int hour) {
        if (hour < 0 || hour > 23)
            return;
        this.hour = hour;
    }
    public int getMinute() {
        return minute;
    }
    public void setMinute(int minute) {
        if (minute < 0 || minute > 59)
            return;
        this.minute = minute;
    }
    public int getSecond() {
        return second;
    }
    public void setSecond(int second) {
        if (second < 0 || second > 59)
            return;
        this.second = second;
    }

    @Override
    public String toString() { // 출력할 형식을 지정
        return hour + ":" + minute + ":" + second;
    }
}
public class TimeEx {
    public static void main(String[] args) {
        Time t = new Time(9, 51, 13);
        System.out.println("변경 전:" + t);

//      t.hour = 11;    변수 hour의 접근 제어자는 private이므로 접근 불가능
        t.setHour(t.getHour() + 2); // 현재 시간보다 2시간 후로 변경
        System.out.println("변경 후:" + t);
    }
}
변경 전:9:51:13
변경 후:11:51:13

 

get으로 시작하는 메서드 : 멤버변수의 값 반환

set으로 시작하는 메서드: 매개변수에 지정된 값을 검사 후, 조건에 맞는 값일 경우에만 멤버변수의 값을 변경

 

Time 클래스의 모든 멤버변수(hour, minute, second)의 접근 제어자를 private으로 설정하고, 이 멤버변수들을 다루기 위한 public 메서드를 따로 추가하였다. 

그러므로, "t.hour = 11;"과 같은 멤버변수로의 직접적인 접근은 허가되지 않는다. 메서드를 통한 접근만 허용된다.