public
- 모든 접근을 허용
- 어떠한 클래스가 접근하더라도 모두 허용
- 다른 패키지에서도 접근 가능
protected
- 상속받은 클래스 또는 같은 패키지에서 접근 가능
- 해당 클래스를 상속하는 자식 클래에서 접근 가능
- 같은 패키지 내부에 있는 클래스, 하위 클래스(상속받은 경우)에서 접근 가능
default
- 기본 제한자
- 자신 클래스 내부와 같은 패키지 내에서만 접근 가능
- 접근 제한자를 명시하지 않음
private
- 외부에서 접근 불가
- 같은 클래스 내에서만 접근 가능
접근범위 | 동일 클래스 |
동일 패키지 |
다른패키지의 동일 클래스 | 다른 패키지 |
적용 대상 | 접근 가능 대상 | 접근 불가 대상 | |
public | 접근제한없음 | O | O | O | O | 클래스, 필드, 생성자, 메소드 | 모든 대상 | 없음 |
protected | 동일패키지와 상속받은 클래스 내부 | O | O | O | X | 필드, 생성자, 메소드 | 같은 패키지 또는 자식 클래스 | 자식 클래스가 아닌 다른 패키지에 소속된 클래스 |
default | 동일패키지 내에서만 | O | O | X | X | 클래스, 필드, 생성자, 메소드 | 같은 패키지에 소속된 클래스 | 다른 패키지에 소속된 클래스 |
private | 동일클래스 내에서만 | O | X | X | X | 필드, 생성자, 메소드 | 클래스 내부 | 클래스 외부 |
public class 클래스{...} // public 접근 제한
class 클래스{...} // default 접근 제한
상속과 접근 지정자
- public, protected, 디폴트, private
슈퍼 클래스의 private 멤버
- 다른 모든 클래스에 접근 불허
- 클래스내의 멤버들에게만 접근 허용
슈퍼 클래스의 디폴트 멤버
- 패키지 내 모든 클래스에 접근 허용
슈퍼 클래스의 public 멤버
- 다른 모든 클래스에 접근 허용
슈퍼 클래스의 protected 멤버
- 같은 패키지 내의 모든 클래스 접근 허용
- 다른 패키지에 있어도 서브 클래스는 슈퍼 클래스의 protected 멤버 접근 가능
'Backend > Java' 카테고리의 다른 글
[Java] 슈퍼 클래스 생성자, 캐스팅, 업캐스팅, 다운캐스팅 (0) | 2023.05.24 |
---|---|
[Java] 메소드 (0) | 2023.05.22 |
[예제] 5개의 정수를 입력받아 합계와 평균을 출력 (for each 사용) (0) | 2023.04.15 |
[예제] 짝수 홀수 판별기 (1) | 2023.04.15 |
[예제] 두 개의 정수를 입력받아 사칙연산 수행하기 (0) | 2023.04.15 |