본문 바로가기

IT/JAVA

[JAVA] 자바 접근 제어자란? 접근제어자의 종류 - 사좋배 공유

접근제어자에 대해 설명하겠습니다.

 

접근제어자

 

public, private와 같은 접근 제어자는 클래스나 메서드 또는 필드에 접근할 수 있는 범위를 지정합니다.

전근 제어자를 설정하지 않은 경우도 봤을 겁니다. 접근 제어자를 지정하지 않으면 객체, 메서드, 필드에는 접근할 수 있는 범위가 다른 접근제어자와는 달라집니다.

 

*class의 접근 제어자: public, 접근 제어자를 지정하지 않음.

*멤버 변수/메서드의 접근 제어자: public, private, protected, 접근 제어자를 지정하지 않음.

 

클래스 선언 시에 붙이는 접근 제어자는 public 접근 제어자를 지정하지 않은 경우가 있었습니다.

public의 경우에는 모든 클래스, 패키지에서 해당 객체에 접근이 가능함을 의미합니다.

접근 제어자를 지정하지 않는 클래스는 해당 패키지와 하위 패키지에서 객체를 접근할 수 있습니다.

 

멤버 변수나 메서드의 접근 제어자에 대해서는

public 접근 제어자는 모든 클래스에서 접근이 가능하고,

접근 제어자를 지정하지 않은 경우는 클래스가 포함된 패키지에서만 접근이 가능합니다.

private 접근 제어자를 지정하는 필드와 메서드는 해당 클래스에서만 참조할 수 있습니다.

즉, 외부의 클래스에서는 이 접근 제어자로 지정된 필드나 메서드에는 접근할 수 없습니다.

protected 접근 제어자는 해당 패키지에서 접근이 가능합니다.

 

 

 

접근 제어자의 접근 가능 범위

접근 제어자 class package 하위 클래스 전역
 public 가능 가능 가능 가능
지정X 가능 가능 불가능 불가능
protected 가능 가능 가능 불가능
private 가능 불가능 불가능 불가능

 

1. public 접근 제어자의 경우에는 해당 class, 클래스의 패키지, 하위 클래스, 전역적으로 접근이 가능합니다.

2. 접근 제어자를 지정 X 경우에는 해당 class, 클래스의 패키지에서만 접근이 가능합니다.

3. protected를 지정하는 경우에는 해당 class, 클래스의 패키지, 하위 클래스에서 접근이 가능합니다.

4. private 접근 제어자는 해당 class에서만 접근이 가능합니다.

 

*protected 접근 제어자는 상속된 클래스에서 접근이 가능하지만 접근 제어자를 지정하지 않은 경우에는 자식 클래스에서는 접근이 불가능합니다.