inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

"생성자 호출순서"만 다뤄보자! (14개 코드예제) v3

25분 1초 질문있습니다.

해결된 질문

73

최영철

작성한 질문수 13

4

7-3 예제에서 두 클래스 모두 생성자가 없고, init()을 호출하는 코드도 mian에서 없는데, 어떤 과정에서 부모 클래스에서 init()이 실행되는건가요 ?

python java c 정보처리기사

답변 2

0

주말코딩

안녕하세요, 해당 질문에 대해서 해설드리겠습니다.

 

new RiskChild()가 실행되면 자바는 먼저 RiskChild의 기본 생성자를 호출하고, 그 안에 암묵적으로 삽입된 super();를 통해 RiskParent의 기본 생성자를 호출합니다.

 

하지만 생성자 본문보다 앞서 부모 클래스의 인스턴스 필드 초기화가 먼저 실행됩니다. RiskParent에는 int val = init();라는 필드 초기화식이 있으므로, 이 시점에 init()이 호출됩니다.

 

자바의 실행 규칙에 따라 init()은 실제 인스턴스 타입인 RiskChild에서 오버라이드한 메서드를 찾아 실행합니다.

 

이때는 아직 RiskChild의 인스턴스 필드(data)가 기본값 null 상태이기 때문에,

return data;에서 int로 오토언박싱이 일어나면서

NullPointerException이라는 오류가 발생합니다.

 

정리하자면, 부모 필드를 초기화하는 과정에서 자식의 미완성 상태를 사용하는 것이 문제의 근본 원인입니다.

0

인프런 AI 인턴

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

생성자와 메서드 호출에 관련된 질문을 주셨네요. Java의 객체지향 프로그래밍에서는 클래스 생성자와 메서드 호출이 어떻게 작동하는지가 중요한 부분입니다.

생성자와 메서드 호출

  • 기본 생성자: 두 클래스 모두에 명시적인 생성자가 없다고 하셨으니, Java에서는 컴파일러가 자동으로 기본 생성자를 제공합니다. 이 기본 생성자는 매개변수가 없는 생성자이며, 특별한 코드가 없으면 아무런 동작도 하지 않습니다.

  • 메서드 호출: init() 메서드는 메인에서 직접 호출하지 않는다고 하셨는데, 일반적으로 메서드가 호출되기 위해서는 명시적인 호출이 있어야 합니다. 만약 부모 클래스에서 init() 메서드가 실행된다면, 그 실행 과정을 추적할 필요가 있습니다. 자식 클래스가 부모 클래스의 메서드를 호출하는지, 혹은 다른 방식으로 호출되는지 코드를 통해 확인이 필요합니다.

관련 정보를 참고할 수 있는 Q&A

아래의 링크는 생성자와 메서드 호출에 대한 추가적인 정보를 제공합니다:

질문하신 코드에서 init() 호출이 명시되지 않았다면, 해당 메서드가 호출되는 부분이나 동작 과정을 다시 확인해 보시는 것이 좋을 것 같습니다. 코드를 더 명확히 이해하는 데 도움이 될 수 있습니다.

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

26년2회 실기기출은 언제쯤...

0

30

2

이론 공부법 요약본 버전 업데이트 문의

0

32

2

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

56

2

조건 반복문 질문: for 문 ?

0

66

1

정처기 26-2회. 9번 질문드립니다!

0

83

1

이론 보면서 질문이 있습니다.

0

80

2

정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문

0

91

2

유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)

0

151

2

262 정처기 실기 C언어코딩

0

48

1

정보처리기사 262 실기 Hash(해시) 질문

0

82

2

static 변수 질문입니다.

0

63

2

파이썬 4강 질문입니다.

0

72

2

모의고사 1회 3번문제

0

95

3

41강 30:10

0

68

2

이론 공부법 질문 있습니다.

0

93

2

부모의 생성자 관련 질문

0

70

2

시험지 문제에 필기해도 되나요?

0

91

3

41강 11:23

0

61

2

4강파이썬 질문입니다

0

58

2

try-catch 핸들러명

0

68

2

36강 3:48

0

66

2

35강 18:27

0

68

2

자식 코드 내 super() 생략

0

61

2

출력질문

0

80

2