해결된 질문
작성
·
104
답변 3
1
안녕하세요,
접근제어자에 따른 상속 여부 답변드립니다.
private: 부모 클래스의 private 메소드는 자식 클래스로 상속되지 않습니다. 오직 해당 클래스 내에서만 접근 가능합니다.
protected:
protected 메소드는 자식 클래스로 상속됩니다.
같은 패키지 내의 다른 클래스에서 접근 가능합니다.
다른 패키지의 자식 클래스에서도 접근 가능합니다.
default (접근 제어자 명시하지 않은 경우):
default 메소드도 자식 클래스로 상속됩니다.
단, 같은 패키지 내에 있는 자식 클래스에서만 접근 가능합니다.
다른 패키지에 있는 자식 클래스에서는 접근할 수 없습니다.
public:
public 메소드는 자식 클래스로 상속됩니다.
어디서든 접근 가능합니다.
요약하자면, protected와 default 모두 자식 클래스에 상속은 되지만, 접근 가능 범위가 다릅니다. protected는 패키지가 달라도 자식 클래스에서 접근 가능하지만, default는 같은 패키지 내의 자식 클래스에서만 접근 가능합니다.
protected가 아마 가장 헷갈릴 것 같아서 예제 하나 준비했습니다.
class ChildProtected extends ParentProtected {
void testMethod() {
protectedMethod(); // 접근 가능
}
// main 메소드 추가
public static void main(String[] args) {
ChildProtected child = new ChildProtected();
child.testMethod();
}
}
class ParentProtected {
protected void protectedMethod() {
System.out.println("This is protected method");
}
}
출력값: This is protected method
0
0
안녕하세요, 인프런 AI 인턴입니다. 주무세요님.
자바에서 접근 제어자에 따른 상속 가능성에 대한 질문 정말 좋습니다. 자바의 접근 제어자는 클래스 멤버의 가시성과 상속 관계에 중요한 역할을 합니다. 이를 통해 클래스와 패키지 내에서 멤버의 접근을 제어하여 보다 안전하고 명확한 클래스 구조를 갖출 수 있습니다.
private:
protected:
default (package-private):
이와 같은 내용을 염두에 두시면 클래스를 설계할 때 더 전략적으로 접근 제어자를 선택할 수 있게 되실 것입니다.
관련된 논의와 더 불명확한 점들을 풀이한 게시글을 참고하시면 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
네 폴더(디렉토리)로 구분합니다. 참고로 아직까지는 정보처리기사 실기에서 별도의 패키지 코드가 출제된 적은 없습니다.