inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

정리

여러 생성자가 있을 때, this()의 역할

399

노동준

작성한 질문수 24

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
안녕하세요! 영한님 강의 너무 잘 보고 있습니다!

생성자 강의를 듣고 있다가 this()에 관한 걸 배웠을 때, 이런 질문이 떠 올랐습니다.

this()는 어떤 클래스의 생성자를 사용하고 싶을 때 사용하는 것이라고 했는데, 만약 오버로딩으로 만든 생성자가 3개 이상일 때, this()는 그 생성자들 중에서 어떤 것을 가리키는 걸까? 에 대한 의문이 생겼습니다.

제가 직접 IDE에서 실험을 했을 땐, this()에 어떤 파라미터를 사용하느냐에 따라, 해당 파라미터와 같은 생성자가 사용되는 것 같은 결과가 나왔습니다.

그렇다면 this()에 대해, this() 안에 파라미터와 같은 생성자가 호출된다고 생각해도 되는 걸까요?

java 객체지향

답변 1

1

김영한

안녕하세요. 노동준님

오버로딩된 생성자들이 여러 개 있을 때, this()를 사용하여 특정 생성자를 명시적으로 호출할 수 있습니다. 이 때, this()에 전달하는 파라미터들은 호출하려는 생성자의 파라미터 목록과 일치해야 합니다.

예를 들어, 클래스 내에 파라미터가 없는 생성자, 하나의 int 파라미터를 가진 생성자, 그리고 두 개의 int 파라미터를 가진 생성자가 있다면, this()를 사용하여 이들 중 하나를 선택적으로 호출할 수 있습니다. this() 안에 전달하는 파라미터의 형태와 수에 따라 호출되는 생성자가 결정됩니다.

  • this() (파라미터 없음): 파라미터가 없는 생성자를 호출합니다.

  • this(10) (하나의 int 파라미터): 하나의 int 파라미터를 가진 생성자를 호출합니다.

  • this(10, 20) (두 개의 int 파라미터): 두 개의 int 파라미터를 가진 생성자를 호출합니다.

따라서 this()에 전달된 파라미터와 동일한 시그니처를 가진 생성자가 호출된다고 이해하시면 됩니다. IDE에서 실험해보신 것처럼, this()는 파라미터의 타입과 수에 따라 해당하는 생성자를 호출하는 방식으로 작동합니다.

감사합니다.

2

노동준

친절한 답변 너무 감사합니다!

영한님 강의를 듣고 꼭 좋은 개발자가 되겠습니다!

질문있습니다

0

30

1

1번 문제 질문입니다.

0

35

1

음악플레이어 문제 중 코드질문

0

28

1

9장 상속 문제와 풀이 질문

0

39

1

강의 자료에 사소한 오타가 있습니다.

0

50

2

매서드 참조값 반환??

0

67

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

73

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

77

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

67

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

99

1

Method1에서 Student 객체

0

74

1

3강 18. null 질문

0

69

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

77

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

90

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

136

1

기본편 객체지향 프로그래밍에 대한 정의

0

88

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

153

2