Java 접근 제어자 - 사용하기
이전에 접근제어자의 필요성에서 스피커 소프트웨어 코드를 참고해보도록 한다.
이 스피커의 요구사항은 볼륨 한도가 100 넘으면 안된다.
Speaker.java
package access;
public class Speaker {
int volume;
Speaker(int volume) {
this.volume = volume;
}
void speakerUp() {
if (volume >= 100) {
System.out.println("볼륨이 최대 음량입니다.");
} else {
volume += 10;
System.out.println("음향이 " + volume + "으로 증가하였습니다.");
}
}
void speakerDown() {
volume -= 10;
System.out.println("음향이 " + volume + "으로 감소하였습니다.");
}
void showSpeaker() {
System.out.println("현재 음향은 " + volume + "입니다.");
}
}
SpeakerMain.java
package access;
public class SpeakerMain {
public static void main(String[] args) {
Speaker speaker = new Speaker(80);
System.out.println("=== New Developer Code ===");
speaker.volume = 200;
speaker.showSpeaker();
}
}
코드에서 보듯이 볼륨 한도를 넘어 200으로 설정된 모습을 볼 수 있다.
Speaker 클래스의 volume 필드를 외부에서 접근하지 못하도록 한다.
volume 접근 제어자 설정하기
volume 필드를 private
접근 제어자를 지정하도록 한다.
package access;
public class Speaker {
private int volume;
...
}
이렇게 한 경우 main 에서는 speaker 객체의 volume 필드를 설정할 수 없다.
private 접근 제어자는 모든 외부 호출을 막게 된다.
privatte 설정된 경우 내부 클래스만 값을 설정할 수 있다.
SpeakerMain.java
System.out.println("=== New Developer Code ===");
// speaker.volume = 200; // Error
다른 클래스에 있는 speaker 객체의 volume 필드를 접근하지 못하는 것을 볼 수 있다.