31분 50초 JAVA 문제
안녕하세요
31분 50초
Child() 함수에 this(5000) 이 있는데 부모를 호출 할 수 있나요?
저는
super, this 아무것도 없을때 명시적으로 super 는 없지만 자동으로 부모를 호출한다
super 가 있으면 부모를 호출한다.
super, this 는 함께 못 쓰인다.
이렇게 알고 있어서, 문제를 풀 때
super 가 명시적으로 없어도 항상 숨어있다고 생각하고 접근했습니다.
그래서 Child() 생성자에 this 가 있으면 super 는 실행되지 않는다고 생각해서
부모 생성자 호출 과정을 제외하고 풀었는데, 결과가 다르게 나와서 헷갈렸습니다
this 가 있는데도 부모 호출이 맞는지 궁금합니다.
그리고 부모를 호출한다면 child() -> parent() -> parent(int x) -> child(int x) 순서가 맞는지도 알려주세요
답변 2
0
안녕하세요!
부모는 언제든지 가장 마지막에 암묵적으로라도 호출됩니다.
이 경우에는 Java 컴파일러가 this.x = x; 위에 super()를 삽입해줍니다.
생성자 체인은 우리가 C언어에서 여러 개의 함수를 순서대로 호출하듯이,
역으로도 실행순서가 순서대로 내려와야합니다. 그래야 제대로 출력이 될테니까요.
그래서 순서는
Child() -> Child(int x) -> 그 안에서 super() -> super의 this(500)이 호출되는 형식입니다.
특히 저 super()는 보이지는 않지만 Java가 삽입해주는 것입니다.
생성자 체인 끝에서 무조건 부모를 한 번은 호출해야합니다.
부모 필드가 초기화되지 않으면 자식은 태어날 수 없습니다.
일단 저렇게 호출은 됐고, 실행은 그 반대 순서대로 됩니다.
좋은 질문 감사드립니다.
0
안녕하세요, 인프런 AI 인턴입니다. whks님.
자바에서의 생성자 호출 순서는 복잡할 수 있지만, 클래스 상속 구조에서의 기본적인 규칙 몇 가지를 이해하시면 명확해집니다. 질문하신 부분을 하나하나 설명드리겠습니다.
생성자 호출 순서 및 규칙
자동적으로 부모 생성자 호출:
- 자바에서는 자식 클래스의 생성자가 호출될 때, 명시적으로
super()를 추가하지 않더라도 부모 클래스의 기본 생성자를 자동으로 호출합니다. 이는 컴파일러가super();를 암묵적으로 추가하기 때문입니다.
- 자바에서는 자식 클래스의 생성자가 호출될 때, 명시적으로
super()와this()호출:- 하나의 생성자 내에서는
super()와this()중 하나만 사용할 수 있습니다. 즉, 두 키워드를 같은 생성자 안에서 동시에 사용할 수 없습니다.
this(5000)이 자식 클래스의 생성자에서 사용되면, 같은 클래스의 다른 생성자를 호출하는 것을 의미합니다. 따라서 그 생성자가 어떤 방식으로 부모 생성자를 호출하는지에 따라 부모 생성자 호출 여부와 호출 시점이 달라집니다.
- 하나의 생성자 내에서는
호출 순서:
- 자식 생성자에서
this(arguments)로 다른 생성자를 호출한다면, 여전히 부모의 생성자를 호출할 기회가 있습니다. 이 다른 생성자가 첫 번째 줄에서super()를 호출하거나 기본 생성자를 호출한다면 결국 부모 생성자가 호출됩니다.
- 자식 생성자에서
상황 예시
- 만약
Child()생성자에서this(5000)을 사용하고, 그 외Child클래스의 다른 생성자에서 부모의 생성자 호출을 명시적으로 다루고 있다면 부모 생성자는 호출됩니다.
- 일반적으로 생성자의 호출 순서는:
Child() -> Child(int x) -> Parent() -> Parent(int x)와 같이 진행될 수 있습니다.
추가적인 이해를 돕기 위한 참고 링크를 제공해 드립니다:
저는 질문자님의 이해를 돕고자 지식공유자의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
정처기 2026-3 실기 문의
0
85
2
정처기 실기 3회 컴싸 사용 여부
0
54
1
모의고사 1 회 2번문제 중
0
73
2
26-2 이론문제 재탕
1
54
1
26-2년도 코드문제
0
38
0
26-2 코드문제
0
43
1
15분 48초 질문
0
60
2
26-1년도 이론문제 재탕
0
68
1
26-1년도 코드문제 재탕
0
48
0
이론재탕만 눈치챘어도
0
75
1
25-3년도 이론문제 재탕
0
59
1
25-3년도 코드문제 재탕
0
43
0
출력값 문의
0
56
2
25-2 분기커버리지
0
47
0
25-2 이론 재탕
0
70
1
25-1 이론 재탕
0
54
1
서브넷 마스크
0
54
2
모의고사 1회 계산문제 2개 맞았는데
0
70
2
업캐스팅 문제 예시 4번 부모 호출
0
51
2
모의고사 자료 해설이 너무 불친절하네요.
0
96
2
부모의 생성자 출력 관련
0
49
2
24-3 이론파트 재탕문제
0
58
0
누락코드
0
46
1
다차원 배열 포인터 질문있습니다
0
72
3





