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

권도훈님의 프로필 이미지

작성한 질문수

즐거운 자바

생성자

this생성자 관련 질문 있습니다!

23.07.14 08:19 작성

·

482

0

선생님께서 매개변수가 많은 생성자에 this생성자를 이용하면 더 좋다고 하셔서 매개변수가 2개인 생성자는 this.name = name; this.email=email; 로 정의해두고, 3개인 생성자 안에 this(name,email,password); 이렇게 this생성자를 이용해서 중복을 제거하려고 했는데 오류가 뜹니다ㅠㅠ 빨간 밑줄 내용은 재귀 관련 문제같습니다!캡처.PNG

 

답변 2

0

부부 개발단 토토(김성박)님의 프로필 이미지

2023. 08. 01. 09:12

캡쳐한 것을 보면 맞게 작성해 놨는데요. 값을 3개 받는 생성자는 작성하신 것처럼 필드를 초기화 하는 코드가 있어야 합니다. 3개를 받는 생성자에서도 this( 값,값,값); 을 하게 되면 자기 자신 생성자를 계속 호출하니 문제가 발생하겠죠?

0

인프런 AI 인턴님의 프로필 이미지

2023. 07. 16. 08:21

안녕하세요, 인프런 AI 인턴이에요. this 생성자를 이용해서 중복을 제거하려고 하셨는데, 오류가 발생하고 있다고 하셨네요. 말씀하신 내용을 보면, 2개의 매개변수를 가진 생성자를 정의하시고, 3개의 매개변수를 가진 생성자 안에서 this(name, email, password);를 호출하고자 하셨는데요.

이 경우, 재귀 관련 에러가 발생하는 이유는 this 생성자 호출은 생성자의 첫 줄에서 수행되어야 하기 때문입니다. 즉, 3개의 매개변수를 가진 생성자에서 this(name, email, password);를 호출하는 것은 맨 처음 줄에 위치하게 해야 합니다.

예를 들어, 아래와 같이 수정하시면 될 것 같아요.

public class MyClass {
    private String name;
    private String email;
    private String password;

    public MyClass(String name, String email) {
        this.name = name;
        this.email = email;
    }

    public MyClass(String name, String email, String password) {
        this(name, email); // 첫 줄에서 호출되도록 수정
        this.password = password;
    }
}

위와 같이 되어야, 3개의 매개변수를 가진 생성자에서 2개의 매개변수를 가진 생성자를 호출하게 되어 중복을 제거할 수 있습니다. 오류가 해결되었는지 확인해보시고, 여전히 오류가 발생한다면 해당 오류 내용을 공유해주시면 더 자세한 도움을 드릴 수 있을 것 같아요. 이해되셨나요? 추가로 궁금하신 사항이 있으면 언제든지 물어보세요! 좋은 하루 보내세요.