작성
·
307
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요! 영한님 강의 너무 잘 보고 있습니다!
생성자 강의를 듣고 있다가 this()에 관한 걸 배웠을 때, 이런 질문이 떠 올랐습니다.
this()는 어떤 클래스의 생성자를 사용하고 싶을 때 사용하는 것이라고 했는데, 만약 오버로딩으로 만든 생성자가 3개 이상일 때, this()는 그 생성자들 중에서 어떤 것을 가리키는 걸까? 에 대한 의문이 생겼습니다.
제가 직접 IDE에서 실험을 했을 땐, this()에 어떤 파라미터를 사용하느냐에 따라, 해당 파라미터와 같은 생성자가 사용되는 것 같은 결과가 나왔습니다.
그렇다면 this()에 대해, this() 안에 파라미터와 같은 생성자가 호출된다고 생각해도 되는 걸까요?
답변 1
1
안녕하세요. 노동준님
오버로딩된 생성자들이 여러 개 있을 때, this()
를 사용하여 특정 생성자를 명시적으로 호출할 수 있습니다. 이 때, this()
에 전달하는 파라미터들은 호출하려는 생성자의 파라미터 목록과 일치해야 합니다.
예를 들어, 클래스 내에 파라미터가 없는 생성자, 하나의 int 파라미터를 가진 생성자, 그리고 두 개의 int 파라미터를 가진 생성자가 있다면, this()
를 사용하여 이들 중 하나를 선택적으로 호출할 수 있습니다. this()
안에 전달하는 파라미터의 형태와 수에 따라 호출되는 생성자가 결정됩니다.
this()
(파라미터 없음): 파라미터가 없는 생성자를 호출합니다.
this(10)
(하나의 int 파라미터): 하나의 int 파라미터를 가진 생성자를 호출합니다.
this(10, 20)
(두 개의 int 파라미터): 두 개의 int 파라미터를 가진 생성자를 호출합니다.
따라서 this()
에 전달된 파라미터와 동일한 시그니처를 가진 생성자가 호출된다고 이해하시면 됩니다. IDE에서 실험해보신 것처럼, this()
는 파라미터의 타입과 수에 따라 해당하는 생성자를 호출하는 방식으로 작동합니다.
감사합니다.
친절한 답변 너무 감사합니다!
영한님 강의를 듣고 꼭 좋은 개발자가 되겠습니다!