[Java] 접근 제어자 이해2

코드 속의 "진돌"·2024년 2월 11일
1
post-thumbnail

✅ 문제 해결 - 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 필드에 직접 접근하는 것은 불가능하다. 이 경우 자바 컴파일러가 컴파일 오류를 발생시킨다.

참고 : 좋은 프로그램은 무한한 자유도가 주어지는 프로그램이 아니라 적절한 제약을 제공하는 프로그램이다.

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글