접근 수준 지시자는 이름 그대로 접근의 허용 수준을 결정할 때 선언하는 키워드이다.
네 가지 접근 수준 지시자
- public
- protected
- private
- default
이러한 선언을 할 수 있는 종류는 두 가지 이다.
- 클래스
- 클래스의 인스턴스 변수와 메소드
- 클래스 정의 대상 - public, defalut
- 인스턴스 변수와 메소드 대상 - public, protected, private, default
클래스의 선언
public class A{}
class B{}
(public) 클래스 A는 어디서든 인스턴스 생성이 가능하다.
(defalut) 클래스 B는 동일 패키지로 묶인 클래스 내에서만 인스턴스 생성을 허용한다.
|
animal 패키지에 있는 Dog 클래스는 defalut로 선언 되었으므로 다른 패키지에서 접근이 불가능하다.
하지만 zoo 패키지에 있는 Cat 클래스는 public으로 선언 되었으므로 다른 패키지에서 접근이 가능하다.
그래서 Dog에서 Cat 객체를 생성은 가능하지만 Cat에서 Dog 객체는 생성이 불가능한 것을 확인할 수 있다.
인스턴스 변수와 메소드의 선언
public class A{
public int a;
protected int b;
private int c;
int d;
public int a1(){}
protected int b1(){}
private int c1(){}
int d1(){}
}
인스턴스를 생성한 후,
(public) 변수 a와 a1은 어디서든 접근이 가능하다.
(protected) 변수 b와 b1은 클래스내부, 동일패키지, 상속 받은 클래스에서 접근이 가능하다.
(private) 변수 c와 c1은 클래스내부에서만 접근이 가능하다.
(default) 변수 d와 d1은 클래스내부, 동일패키지에서 접근이 가능하다.
이러한 접근 수준 지시자들은 상황에 맞게 인스턴스 변수와 메소드를 접근하지 못하게 하여 뜻하지 않는 수정을 예방할 수 있으며 특히 객체지향 프로그래밍이나 관점지향 프로그래밍에서 큰 이점을 볼 수 있을 것이다.
'Java' 카테고리의 다른 글
[Java] Interface 정리(2) (0) | 2023.07.18 |
---|---|
[Java] InterFace 정리(1) (0) | 2023.07.17 |
[Java] 자바 상속 정리 (0) | 2023.07.14 |
[Java] foreach문 사용하기 (0) | 2023.07.12 |
배열로 Stack 구현해보기 (0) | 2022.12.17 |