그런데 만약 이때 AccessObjExamAccessObj를 상속하고 있었다면 protectedp2는 에러가 발생하지 않습니다. 접근 제한자 protected는 서로 다른 패키지라도 상속받은 자식 클래스에서는 접근할 수 있기 때문입니다.

    package 다른 패키지;
    
    public class AccessObjExam {
    
        public static void main(String[] args) {
            AccessObj obj = new AccessObj();
            System.out.println(obj.p);
            System.out.println(obj.p2); 
            System.out.println(obj.i);  // 컴파일 오류가 발생합니다.
            System.out.println(obj.k);  // 컴파일 오류가 발생합니다.
        }
    }

     

    접근 제한자는 필드뿐 아니라 메서드와 클래스 앞에 붙여 사용할 수도 있습니다. 이처럼 접근 제한자에 따라서 해당 클래스나 해당 필드, 메서드에 어디까지 접근해 사용할 수 있게 할 것인지 정의할 수 있습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.