[Java] 자바 생성자 Overloading(오버로딩) 알아보기

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);
    }
}