
✅ 문제 해결 - private
앞선 문제를 근본적으로 해결하는 방법은 volume 필드를 Speaker 클래스 외부에서는 접근하지 못하게 막는 것이다.
✏️ Speaker - volume 접근 제어자를 private으로 수정
package access;
public class Speaker {
private int volume; // private 사용
...
}
private 접근 제어자는 모든 외부 호출을 막는다. 따라서 private이 붙은 경우 해당 클래스 내부에서만 호출할 수 있다.
그림을 보면 volume 필드를 private을 사용해서 Speaker 내부에 숨겼다.
외부에서 volume 필드에 직접 접근할 수 없게 막은 것이다. volume 필드는 이제 Speaker 내부에서만 접근할 수 있다.
✏️ SpeakerMain 실행
// 필드에 직접 접근
System.out.println("volume 필드 직접 접근 수정");
speaker.volume = 200; // private 접근 오류
IDE에서 speaker.volume = 200 부분에 오류가 발생하는 것을 확인할 수 있다. 실행해보면 다음과 같은 컴파일 오류가 발생한다.
컴파일 오류 메시지

volume 필드는 private으로 설정되어 있기 때문에 외부에서 접근할 수 없다는 오류이다.
✏️ volume 필드 직접 접근 - 주석 처리
// 필드에 직접 접근
System.out.println("volume 필드 직접 접근 수정");
// speaker.volume = 200; // private 접근 오류
speaker.showVolume();
이제 Speaker 외부에서 volume 필드에 직접 접근하는 것은 불가능하다. 이 경우 자바 컴파일러가 컴파일 오류를 발생시킨다.
참고 : 좋은 프로그램은 무한한 자유도가 주어지는 프로그램이 아니라 적절한 제약을 제공하는 프로그램이다.
'Back-end > Java' 카테고리의 다른 글
| [Java - 기본] 접근 제어자 사용 - 필드, 메서드 (0) | 2024.04.13 |
|---|---|
| [Java - 기본] 접근 제어자 종류 (0) | 2024.04.13 |
| [Java - 기본] 접근 제어자 이해1 (0) | 2024.04.13 |
| [Java - 기본] 패키지 규칙 (0) | 2024.04.12 |
| [Java - 기본] 패키지 - import (0) | 2024.04.10 |