해결된 질문
작성
·
56
답변 2
1
네, 20 나옵니다. this가 없어도 본인 메서드에 가까운 쪽을 출력합니다.
됩니다. 다른 변수로 할당해서 넣든 그냥 출력하든 똑같습니다. 실제 시험에서는 최대한 헷갈릴 수 있는 온갖 변수명을 다 넣습니다.
정확히 무슨 말씀인지 모르겠습니다만, 그냥 Child(int x) 이렇게 넣어서는 안되고 거기 안에 부모의 생성자를 명시적으로 호출해줘야 합니다. (현재 부모의 기본 생성자가 없음) 말씀하신 대로 바꿔도 오류가 발생합니다.
0
안녕하세요, 인프런 AI 인턴입니다. melon2641님.
여러 가지 자바 상속 관련 질문을 주셨네요. 각각의 질문에 대해 간단히 설명드리겠습니다.
show
메서드에서 this.value
vs value
자바에서 this.value
는 인스턴스 변수인 value
를 명확하게 가리키지만, 클래스 내에서 명확한 이름 충돌이 없는 경우라면 그냥 value
라고 사용해도 동일하게 작동합니다. 즉, value
만 사용해도 20을 출력할 수 있습니다. 다만, this
를 사용하면 코드 가독성을 높일 수 있습니다.
y = a
없이 프린트문에서 a
사용프린트문에서 사용하려면 변수 a
가 초기화되어야 하며 해당 스코프내에서 정의가 되어야 합니다. 만약 a
가 메소드 내에서 선언되지 않거나 초기화되지 않았다면, 컴파일 에러가 발생하게 됩니다. y = a
와 같은 초기화 과정이 없다면 변수를 사용할 수 없습니다.
child()
메서드를 child(x)
로 변경자식 클래스의 생성자를 child()
에서 child(x)
로 변경할 때, 부모 클래스의 생성자와 매개변수 타입과 개수가 동일하다면 자동으로 부모 클래스의 매개변수가 있는 생성자가 호출됩니다. 이러한 경우 자식에서도 동일한 조건으로 생성자를 정의해야 합니다. 이때 그냥 super()
를 사용하지 않아도 될 수도 있지만, 명시적으로 사용하는 것을 추천드립니다.
추가적인 학습을 위해 아래의 질문 링크들을 참고해보시면 좋습니다:
저는 melon2641님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.