2020-11-16
클래스에는 3가지 요소가 존재하는데, 바로 필드 / 생성자 / 메서드 가 있다. 오늘은 이 3가지 중 초기화를 담당하는 생성자의 오버 로딩에 대해서 알아보도록 하겠다.
우선 오버로딩이라는 단어의 뜻에서 유추할 수 있듯이 기존의 기본 생성자를 다양한 방법으로 객체를 생성할 수 있도록 매개변수를 달리하여, 다수의 생성자를 선언하는 것이다. ( 말이 좀 어려울 수 도 있는데, 코드를 보면 쉽게 이해할 수 있다.)
public class Overloading {
String name;
String sex;
int age;
public Overloading() {
}
public Overloading(String name) {
this.name = name;
}
//이름 매개변수를 받는 생성자
public Overloading(String name, String sex) {
this.name = name;
this.sex = sex;
}
//이름, 성별 매개변수를 받는 생성자
public Overloading(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
//이름, 성별, 나이 매개변수를 받는 생성자
}
위의 코드와 같이 필드의 타입과 매개변수를 괄호 안에 적어주면 된다. 이후 this를 통해서 초기화를 시켜주면 간단히 선언할 수 있다. (앞서 말한듯이 코드는 간단하다.)
이후 메인 클래스에서 새로운 객체를 선언시 오류 없이 정상적으로 코드가 작성되는 것을 알 수 있다.
마지막으로 System.out.println(); 으로 생성된 객체의 각 요소를 출력해본 결과 역시 정상적으로 원하는 데이터가 들어가 있는 것을 알 수 있다.
public class TemplateA {
public static void main(String[] args){
Overloading a = new Overloading();
Overloading b = new Overloading("홍길동");
Overloading c = new Overloading("홍길동", "남");
Overloading d = new Overloading("홍길동", "남", 25);
System.out.println(b.name);
System.out.println(c.name + " " + c.sex);
System.out.println(d.name + " " + d.sex + " " + d.age);
}
}