인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

melon2641님의 프로필 이미지

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

Java: 상속을 정리하는 문제 10개

상속을 정리하는 문제 10개 / 3가지 질문있습니다.

해결된 질문

작성

·

56

0

안녕하세요 주말코딩님 고생많으십니다.

3가지 질문이 있어 적어보았습니다.

 

  1. 7분50초 유형 2자식 show에 this.value가 아닌 그냥 value여도 20을 출력하는지?

     

     

     

     

     

  2. 12분유형 4 부모에서 y=a없이 프린트문에 Y대신 a로 출력을 하면 안되나요?

 

 

  1. 20분 유형 10 child에서 int x를 정의하고 child()->child(x) 로 변경하면 부모와의 매개변수 숫자가 동일하니 오류가 안나나요?

 

답변 2

1

주말코딩님의 프로필 이미지
주말코딩
지식공유자

  1. 네, 20 나옵니다. this가 없어도 본인 메서드에 가까운 쪽을 출력합니다.

  2. 됩니다. 다른 변수로 할당해서 넣든 그냥 출력하든 똑같습니다. 실제 시험에서는 최대한 헷갈릴 수 있는 온갖 변수명을 다 넣습니다.

  3. 정확히 무슨 말씀인지 모르겠습니다만, 그냥 Child(int x) 이렇게 넣어서는 안되고 거기 안에 부모의 생성자를 명시적으로 호출해줘야 합니다. (현재 부모의 기본 생성자가 없음) 말씀하신 대로 바꿔도 오류가 발생합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. melon2641님.

여러 가지 자바 상속 관련 질문을 주셨네요. 각각의 질문에 대해 간단히 설명드리겠습니다.

1. 7분 50초 유형: 자식의 show 메서드에서 this.value vs value

자바에서 this.value는 인스턴스 변수인 value를 명확하게 가리키지만, 클래스 내에서 명확한 이름 충돌이 없는 경우라면 그냥 value라고 사용해도 동일하게 작동합니다. 즉, value만 사용해도 20을 출력할 수 있습니다. 다만, this를 사용하면 코드 가독성을 높일 수 있습니다.

2. 12분 유형: 부모 클래스에서 y = a 없이 프린트문에서 a 사용

프린트문에서 사용하려면 변수 a가 초기화되어야 하며 해당 스코프내에서 정의가 되어야 합니다. 만약 a가 메소드 내에서 선언되지 않거나 초기화되지 않았다면, 컴파일 에러가 발생하게 됩니다. y = a와 같은 초기화 과정이 없다면 변수를 사용할 수 없습니다.

3. 20분 유형: child() 메서드를 child(x)로 변경

자식 클래스의 생성자를 child()에서 child(x)로 변경할 때, 부모 클래스의 생성자와 매개변수 타입과 개수가 동일하다면 자동으로 부모 클래스의 매개변수가 있는 생성자가 호출됩니다. 이러한 경우 자식에서도 동일한 조건으로 생성자를 정의해야 합니다. 이때 그냥 super()를 사용하지 않아도 될 수도 있지만, 명시적으로 사용하는 것을 추천드립니다.

추가적인 학습을 위해 아래의 질문 링크들을 참고해보시면 좋습니다:

저는 melon2641님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.