본문 바로가기
Java

[Java] 정보 은닉 / 접근 제어자 / public / protected / private

by bkuk 2022. 9. 29.

클래스를 만들고 멤버 변수, 메서드, 생성자 등을 만들 때 public 예약어를 흔히 사용합니다.

객체 지향 프로그램에서는 접근 제어자를 통해 접근 권한을 부여할 수 있습니다.

 

접근 제어자 설명
public 외부 클래스 어디에서나 접근 가능
protected 같은 패키지 내부 또는 상속 관계의 클래스에서 접근 가능하며,
그 외 클래스는 접근 불가
명시하지 않은 경우 default, 같은 패키지 내부에서만 접근 가능
private 같은 클래스 내부에서만 접근 가능

 


 

멤버 변수에 private 접근 제어자를 작성해주고, 호출 한다면?

접근할 수 없다는 오류가 발생

 

 

멤버 변수에 private 접근 제어자를 주석처리 한다면?

 public, protected 등과 같은 접근 제어자로 설정된 변수는 출력 가능합니다.

 

 

멤버 변수 말고도,

클래스 내에 정의되어 있는 클래스 메서드 또한 동일한 에러를 발생한다.

 

 

private 변수에 접근하려면 아래와 같이 클래스 내에서 메서드를 생성해서 접근하면 가능합니다.

 


예제를 통해 알아보겠습니다.

본 예제는 생활코딩님의 강의(자유와 규제3 - 사용이유)를 참고했습니다.

 

 

위와 같이, 접근 제어자 private로 정의된 메소드를 보면 개발자의 의도를 알 수 있습니다.

이 부분은 내가 접근하지 말아야겠구나.

 

따라서, 접근 제어자 public으로 정의된 메소드만 사용하면 됩니다.

 

또한, 아래와 같은 상황을 대비할 수 있습니다.

접근 제어자가 private가 아닌 public으로 정의되어 있다면,

 

 

이걸 사용하는 사용자에게는 

 

생성된 인스턴스를 통해 변수에 접근하는 상황이 발생할 수 도 있습니다.

즉, 참조변수를 통해 변수 값을 직접 할당한다거나, 변수값의 정수가 아닌 값들을 할당하는 등

 

위와 같은 상황으로 인한 오류가 발생할지도 모릅니다.

 

 

 

댓글