-
[자바/Java] 자바 접근 제한자 알아보기 (Access Modifier)Java 2021. 6. 18. 10:43
접근 제한자
: 객체의 멤버에게 접근 제한을 거는 키워드
자바 접근 제한자의 종류
- public
- protected
- default
- private
public 부터 순서대로 접근 제한이 강화된다.
접근 제한자 정리 표
접근 제한 적용 대상 접근할 수 없는 클래스 public 클래스, 필드, 생성자, 메서드 없음 protected 필드, 생성자, 메서드 자식 클래스가 아닌 다른 패키지에 소속된 클래스 default 클래스, 필드, 생성자, 메서드 다른 패키지에 소속된 클래스 private 필드, 생성자, 메서드 모든 외부 클래스 클래스의 접근 제한
: 클래스에 적용 가능한 접근 제한자는 public, default 단 두 가지
- public : 동일 패키지뿐만 아니라 외부 패키지에서도 아무런 제한 없이 접근이 가능하다.
- default : 기본적으로 클래스에 접근 제한자를 생략하면 default가 적용됨, default를 클래스의 접근 제한자로선언시 동일 패키지는 아무런 제한 없이 접근 가능 하지만 외부 패키지에서는 접근이 불가하다.
생성자의 접근 제한
: 자동으로 생성되는 생성자의 접근 제한자는 해당 클래스에 선언된 접근 제한와 동일하다.
- public : 모든 패키지에서 생성자 호출이 가능하다.
- protected : 같은 패키지에 속하는 클래스에서 생성자 호출이 가능하다. 추가로 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 생성자를 호출할 수 있다.
- default : 클래스와 마찬가지로 생성자의 접근 제한자를 생략하면 기본적으로 default로 적용된다. default는 같은 패키지는 자유롭게 생성자 호출이 가능 하지만 외부 패키지는 접근이 제한된다.
- private : 같은 패키지이건 다른 패키지이건 생성자를 호출하지 못한다. 따라서 클래스 외부에서 new 연산자로 객체를 만들 수 없다. 오로지 클래스 내부에서만 생성자를 호출할 수 있다.
필드와 메서드의 접근 제한
- public : 모든 패키지에서 아무런 제한 없이 필드와 메서드를 사용할 수 있다. 단, 필드와 메서드가 public 접근 제한을 가질 경우 클래스도 public 접근 제한을 가져야 한다.
- protected : 같은 패키지에 속하는 클래스에서 자유롭게 접근이 가능하다. 추가로 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 필드와 메서드 사용이 가능하다.
- default : 클래스와 마찬가지로 접근 제한자를 생략하면 기본적으로 default로 적용된다. default는 같은 패키지는 자유롭게 사용이 가능 하지만 외부 패키지는 접근이 제한된다.
- private : 동일 패키지이건 다른 패키지이건 상관없이 필드와 메서드를 사용할 수 없다. 오로지 클래스 내부에서만 사용이 가능하다.
참고자료
- 신용권, 「이것이 자바다」, 한빛미디어 (2015)
'Java' 카테고리의 다른 글
[자바/Java] 자바 JPA 알아보기 (0) 2021.07.25 [자바/Java] 자바 빌더 패턴(Builder Pattern) 알아보기 (0) 2021.07.18 [자바/Java] 자바 스트림 (Stream) 알아보기 (0) 2021.06.18 [자바/Java] 자바 람다 (lambda) 표현식 알아보기 (0) 2021.06.17 [자바/Java] JDK, JRE,JVM의 차이는 뭘까? (0) 2021.02.27