• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

23.07.14 08:19 작성 조회수 413

0

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

 

답변 2

·

답변을 작성해보세요.

0

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

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.16

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