생성자 오버로딩


<aside> 🚢

설명


예시


package construct;

public class MemberConstruct {
    String name;
    int age;
    int grade;
		
    MemberConstruct(String name, int age) {
        this.name = name;
        this.age = age;
        this.grade = 50;
    }

    MemberConstruct(String name, int age, int grade) {
        System.out.println("생성자 name = " + name + " 나이 : " + age  + " 성적 : " + grade);
        this.name = name;
        this.age = age;
        this.grade = grade;
    }
}
----------------------------
package construct;

public class MemberConstructMain1 {
    public static void main(String[] args) {
        MemberConstruct memberConstruct = new MemberConstruct("학생1" ,  17);
        MemberConstruct memberConstruct2 = new MemberConstruct("학생1" ,  16, 80);

        MemberConstruct[] memberConstructs = {memberConstruct, memberConstruct2};

        for(int i = 0; i < memberConstructs.length; i++) {
            System.out.println("이름 : " + memberConstructs[i].name + " 나이 : " + memberConstructs[i].age +
                    " 성적 : " + memberConstructs[i].grade);
        }
    }
}

그럼 첫 번째 생성자는 name과 age만 값을 받음

</aside>

this() 사용


<aside> 🪁

설명


예제


package construct;

public class MemberConstruct {
    String name;
    int age;
    int grade;

    MemberConstruct(String name, int age) {
        this(name, age, 50);
    }

    MemberConstruct(String name, int age, int grade) {
        System.out.println("생성자 name = " + name + " 나이 : " + age  + " 성적 : " + grade);
        this.name = name;
        this.age = age;
        this.grade = grade;
    }
}

위 생성자 실행 시 아래 생성자에 값을 던져줘 동작하여 값을 반환
쉽게 this()를 사용하면 생성자 내부에서 다른 생성자를 호출하여 중복을 제거한다고 생각
생성자를 찾아가는 방법은, 명시적으로 매개변수 리스트가 일치하는 생성자가 호출이 됌

</aside>