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)와 같이 진행될 수 있습니다.
추가적인 이해를 돕기 위한 참고 링크를 제공해 드립니다:
저는 질문자님의 이해를 돕고자 지식공유자의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
영상 다운로드는 안되나요?
0
20
1
26년2회 실기기출은 언제쯤...
0
64
2
이론 공부법 요약본 버전 업데이트 문의
0
48
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
64
2
조건 반복문 질문: for 문 ?
0
66
1
정처기 26-2회. 9번 질문드립니다!
0
88
1
이론 보면서 질문이 있습니다.
0
84
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
99
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
157
2
262 정처기 실기 C언어코딩
0
55
1
정보처리기사 262 실기 Hash(해시) 질문
0
88
2
static 변수 질문입니다.
0
67
2
파이썬 4강 질문입니다.
0
75
2
모의고사 1회 3번문제
0
100
3
41강 30:10
0
70
2
이론 공부법 질문 있습니다.
0
99
2
부모의 생성자 관련 질문
0
72
2
시험지 문제에 필기해도 되나요?
0
96
3
41강 11:23
0
63
2
4강파이썬 질문입니다
0
60
2
try-catch 핸들러명
0
73
2
36강 3:48
0
71
2
35강 18:27
0
71
2
자식 코드 내 super() 생략
0
65
2





