인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

treewhy님의 프로필 이미지
treewhy

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

Java언어 기출문제의 변형

Java 언어 기출문제의 변형

해결된 질문

작성

·

81

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)를 먼저 실행하는 이유가 궁금합니다.

 

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

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

답변 1

1

주말코딩님의 프로필 이미지
주말코딩
지식공유자

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

 

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

 

그래서 XABY입니다.

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

 

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

 

treewhy님의 프로필 이미지
treewhy
질문자

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

treewhy님의 프로필 이미지
treewhy

작성한 질문수

질문하기