inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

super - 부모 참조

상속 질문

533

hoonseung

작성한 질문수 34

3

public class ExtendsAccessMain{

    public static void main(String[] args) {

        Child child = new Child();
        int value1 = child.publicValue;

        int value2 = child.protectedValue;
        
        

        child.call();

    }

안녕하세요 상속 관련하여 질문이 있습니다.

parent를 상속 받은 child 인스턴스 생성 시

parent에 있는 protected 접근 제어자 필드 값은 접근이

안되더라구요 자식 클래스 레벨에서는 접근이 되지만 자식 인스턴스 생성 시에는 접근이 안되는 이유가 있을까요?

(부모 클래스와 같은 패키지에 메인이 있으면 접근 가능했습니다.)

 

java 객체지향

답변 1

6

김영한

안녕하세요. seunghoonL님

protected 멤버에 대한 접근은 자식 클래스의 메서드나 생성자 내부에서 일어나야 합니다.

지금과 같이 자식 클래스 외부에서 접근하는 것은 허용되지 않습니다.

쉽게 이야기하자면 private을 떠올려보시면 됩니다.

private은 외부에서 접근이 불가능합니다. protected는 private 처럼 외부에서 접근이 불가능하지만, 자식 클래스 내부에서만 접근이 가능하도록 허용한 것이라 생각하시면 됩니다.

감사합니다.

3

hoonseung

답변 감사합니다 또 궁금한점이..

부모 클래스와 같은 패키지에서는 외부에서 접근이 가능한부분이 있는거 같아서요

parent 클래스가 속한 패키지에 메인 클래스를 만들고 메인 안에서 child 인스턴스 생성 시에는 child.protectedValue 접근이 가능한거는 어떤 이유인지 궁금합니다.

* 패키지 구조

child

  • Child

parent

  • Parent

  • ExtendAccessMain

     

    입니다.

5

김영한

안녕하세요. seunghoonL님

강의 자료에 보시면 다음과 같이 정의되어 있습니다.

  1. 접근 제어자 -> 접근 제어자 종류

접근 제어자의 종류

* private: 모든 외부 호출을 막는다.

* default(package-private): 같은 패키지안에서 호출은 허용한다.

* protected: 같은 패키지안에서 호출은 허용한다. 패키지가 달라도 상속 관계의 호출은 허용한다.

* public: 모든 외부 호출을 허용한다.

 

protected는 상속 관계 + 같은 패키지안에서 호출은 허용합니다.

 

말씀하신 내용중에 ExtendAccessMain과 Parent.protectedValue는 같은 패키지 입니다. 따라서 접근이 가능합니다. 여기에 추가로 child.protectedValue에 접근하려면 child에서 다시 parent에 접근하는 것이 필요합니다. Parent와 Child는 상속관계입니다. 따라서 Child를 통해서 Parent.protectedValue에도 접근할 수 있습니다.

감사합니다.

질문있습니다

0

30

1

1번 문제 질문입니다.

0

35

1

음악플레이어 문제 중 코드질문

0

28

1

9장 상속 문제와 풀이 질문

0

38

1

강의 자료에 사소한 오타가 있습니다.

0

50

2

매서드 참조값 반환??

0

67

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

72

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

77

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

67

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

98

1

Method1에서 Student 객체

0

74

1

3강 18. null 질문

0

69

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

77

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

90

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

136

1

기본편 객체지향 프로그래밍에 대한 정의

0

88

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

153

2