접근 제한 유형
- 공공의
- 이는 모든 클래스가 액세스할 수 있음을 의미합니다.
- 보호
- 이것은 그 자체로, 같은 패키지에 있든, 다른 패키지에 있든 상속된 자식 클래스에서 액세스할 수 있음을 의미합니다.
- 사적인
- 액세스 수정자가 지정되지 않은 경우 기본 액세스 식별자
- 이는 자신과 동일한 패키지에서만 호출할 수 있음을 의미합니다.
public class AccessObj{
public int p = 3;
protected int p2 = 4;
int k = 2; // default접근 제한자
private int i = 1;
}
- AccessObj를 사용한 AccessObjExam
- AccessObj의 필드 i에 대한 액세스 수정자는 비공개이므로 다른 클래스인 AccessObjExam에서 액세스할 수 없습니다.
public class AccessObjExam{
public static void main(String args()){
AccessObj po = new AccessObj();
System.out.println(po.p);
System.out.println(po.p2);
System.out.println(po.k);
System.out.println(po.i); // 컴파일 오류가 발생합니다.
}
}
- AccessObj 및 기타 패키지 사용해 보기
- 패키지가 변경되었기 때문에 기본 액세스 한정자라고 하는 k 필드와 보호된 액세스 한정자라고 하는 p2 필드에 액세스할 수 없습니다.
public class AccessObjExam{
public static void main(String args()){
AccessObj po = new AccessObj();
System.lout.println(po.p);
System.lout.println(po.p2);// 컴파일 오류가 발생합니다.
System.lout.println(po.k);// 컴파일 오류가 발생합니다.
System.out.println(po.i); // 컴파일 오류가 발생합니다.
}
}
- AccessObjExam을 AccesObj에서 상속하도록 변경 후 사용해보세요.
- 패키지는 다르지만 상속 관계로 인해 보호 액세스 수정자로 표시된 p2 필드에 액세스할 수 있습니다.
public class AccessObjExam extends AccessObj{
public static void main(String() args) {
AccessObjExam obj = new AccessObjExam();
System.out.println(obj.p);
System.out.println(obj.p2);
System.out.println(obj.k);// 컴파일 오류가 발생합니다.
System.out.println(obj.i);// 컴파일 오류가 발생합니다.
}
}