자바에서 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화 할수 있는 메소드로 생성자의 이름은 해당 클래스의 이름과 같아야한다.
메소드 오버로딩이 가능
하다.// 메소드 오버로딩
person(String name){}
person(String name, int age){}
person(String name, int age, String address){}
person(String name, int age, String address, String hobby){}
클래스 생성자를 선언하는 문법
클래스이름(){...} // 매개변수 없는 생성자 선언
클래스이름(인수1, 인수2, ...){...} // 매개변수가 있는 생성자 선언
person(String name, int age, String address, String hobby){
this.name = name;
this.age = age;
this.address = address;
this.hobby = hobby;
}
이 때, 주의 사항을 반한값을 명시하지 않는다.
new 키워드를 사용하여 객체를 생성할 때 자동을 생성자가 호출된다.
package Constructor;
class Person {
String name;
int age;
String hobby;
// 생성자 선언
Person(String name, int age, String hobby){
this.name = name;
this.age = age;
this.hobby = hobby;
}
public String getName(){
return name;
}
}
public class User {
public static void main(String[] args) {
// new 키워드를 통한 생성자 호출
Person person = new Person("Jay", 12, "game");
System.out.println(person.getName());
}
}
자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 하지만
자바 컴파일러는 기본 생성자를 제공하므로, 생성자를 정의하지 않고도 인스턴스를 생성할 수 있다. 다만 매개변수를 하나도 가지지 않으며, 아무런 명령어도 포함되어 있으면 안된다.
자바 컴파일러는 컴파일시 클래스에 생성자가 하나도 정의되어 있지 않으면, 자동으로 다음과 같은 기본 생성자를 추가한다.
클래스이름(){}
Person(){}
class Person {
private String name = "jay";
private int age = 12;
private String hobby = "Watching Movie";
public void getPerson(){
System.out.println(this.name + "님 환영합니다.");
}
}
public class User {
public static void main(String[] args) {
Person person = new Person(); // 기본 생성자의 호출
person.greeting(); // jay님 안녕하세요.
}
}