생성자 오버로딩
<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>