Java 접근 제어자 - 종류
접근 제어자 종류는 4개가 있다.
접근 제어자 종류
- private: 모든 외부 호출을 막는다.
- default (pacakge-private 접근제어자): 같은 패키지에서 호출을 허용한다.
- protected: 같은 패키지에서 호출을 허용한다. 패키지가 다른 경우 상속 관계로의 호출은 허용한다.
- public: 모든 외부 호출을 허용한다.
위의 종류 순서대로 private 가장 많이 호출을 거부하고, public 이 호출을 허용한다.
private > default > protected > public
default(pacakge-private 접근제어자)
접근제어자가 명시하지 않은 경우 default 접근 제어자가 적용한다.
default 는 접근제어자가 기본값으로 사용하고 있으므로 붙여진 이름이다.
package-private 이름은 default 접근제어자의 다른 이름으로 정확한 표현이다.
이유는 해당 접근 제어자를 사용하는 멤버는 동일 패키지 내에서 다른 클래스 접근만 가능하다.
public class User {
String userId; // Access Modifier: default
String name; // Access Modifier: default
}
접근 제어자 적용 위치
접근 제어자는 변수, 메소드, 생성자에 가장 첫번 째 필드로 사용한다.
일부 클래스 레벨에서도 접근 제어자를 사용할 수 있다.
package access;
public class Speaker {
private int volume; // 변수 접근 제어자 private
public Speaker(int volume) {} // 생성자 접근 제어자 public
public void speakerUp() {} // 메소드 접근 제어자 public
public void speakerDown() {} // 메소드 접근 제어자 public
public void showSpeaker() {} // 메소드 접근 제어자 public
}
참고: 메소드 내부의 지역변수에서는 사용할 수 없음
접근 제어자 핵심
접근 제어자는 자기의 속성과 기능을 숨겨준다.
- private: 클래스에서만 속성과 기능을 숨겨 사용. 외부 클래스에서만 호출할 수 없음
- default: 패키지에서만 속성과 기능을 숨겨 사용. 외부 패키지에서만 호출할 수 없음
- protected: 상속 받은 곳에서만 속성과 기능을 숨겨 사용. 상속 관계가 아닌 곳은 호출할 수 없음
- public: 숨기지 않고 모든 곳에서 사용. 어디든 호출할 수 있음