강의

멘토링

로드맵

Inflearn Community Q&A

treewhy9098's profile image
treewhy9098

asked

(2025) Information Processing Engineer Practical Exam - Pass in One Week

Variations of Java Language Past Exam Questions

Java 언어 기출문제의 변형

Resolved

Written on

·

139

0

안녕하세요, “Java 언어 기출문제의 변형” 수업 수강 중 이해가지 않는 부분이 있어 질문 드리게 되었습니다. (4:30~)

 

class A {

A() {

System.out.print(‘A’);

}

A(char x) {

System.out.print(x);

}

}

 

class B extends A {

B() {

super();

System.out.print(‘B’);

}

 

B(char x) {

this();

System.out.print(x);

}

}

 

public class Test {

public static void main(String[] args) {

A s1 = new A(‘X’);

A s2 = new B(‘Y’);

 

 

A s2 = new B(‘Y’); 이 부분을 실행할 때

부모생성자를 먼저 실행한 후 B(char x)를 실행하지 않고

B(char x)를 먼저 실행하는 이유가 궁금합니다.

 

동일 질문에 파라미터가 있는 것을 이미 실행했다면, 기본 생성자는 실행되지 않는다고 답변 주셨는데,

왜 이 코드에서는 파라미터가 있는 것을 실행하기 전에 부모 생성자를 먼저 실행하지 않는 것인지 궁금합니다.

pythonjavac정보처리기사

Answer 1

1

weekendcode님의 프로필 이미지
weekendcode
Instructor

다시 들어보니 제가 영상에서 설명을 잘못하긴했네요. 그런데 답 자체는 맞습니다.

 

정확히 말씀드리자면, 해당 문제에서는 자식의 super는 무시됩니다. 한 클래스의 동일한 생성자는 2번 실행되지 않습니다. 먼저 부모 생성자가 태어나는게 맞습니다.

 

그래서 XABY입니다.

생각하신 로직이 맞습니다.

 

추후에 해설 수정하겠습니다.

 

treewhy님의 프로필 이미지
treewhy
Questioner

빠른 답변 정말 감사드립니다..!!

treewhy9098's profile image
treewhy9098

asked

Ask a question