- 객체가 생성 될 때 초기화 목적으로 실행되는 목적어
- 객체가 생성되는 순간 자동 호출
- 생성자 이름은 클래스 이름과 동일
- 생성자는 여러 개 작성 가능(생성자 중복)
public class Circle {
public Circle() {...} // 매개 변수 없는 생성자
public Circle(int r, String n) {...} // 2개의 매개 변수를 가진 생성자
}
- 생성자는 객체 생성시 한 번만 생성
Circle pizza = new Circle(10, "자바피자"); // 생성자 Circle(int r, String n)호출
Circle donut = new Circle(); // 생성자 Circle() 호출
생성자의 목적은 객체 생성 시 초기화
생성자는 리턴 타입을 지정할 수 없음
public void Circle() {...} // 오류. void도 사용 안 됨
public class Book { String title; String author;
public Book(String t) { // 생성자
title = t; author = "작자미상";
}
public Book(String t, String a) { // 생성자 (매개변수1, 매개변수2)
title = t; author = a;
}
public static void main(String [] args) {
Book littlePrince = new Book("어린왕자", "생텍쥐페리");
Book loveStory = new Book("춘향전");
System.out.println(littlePrince.title + " " + littlePrince.author);
System.out.println(loveStory.title + " " + loveStory.author);
}
}
어린왕자, 생텍쥐페리
춘향전, 작자미상
기본 생성자(default constructor)
매개 변수 없고, 아무 작업 없이 단순 리턴하는 생성자
class Circle {
public Circle() { } // 기본 생성자 }
디폴트 생성자라고도 불림
클래스에 생성자가 하나도 선언되어 있지 않을 때, 컴파일러에 의해 기본 생성자 자동 생성
public class Circle {
int radius = 0;
void set(int r) {
radius = r;
}
double getArea() {
return 3.14 * radius * radius;
}
//public Circle() {...} 식의 기본 생성자가 없음.
}
public static void main(String args[]) {
Circle pizza = new Circle();
System.out.println(pizza.set(5));
}
클래스에 생성자가 선언되어 있는 경우 컴파일러는 기본 생성자를 자동 생성해 주지 않는다
public class Circle {
int radius = 0;
void set(int r) {
radius = r;
}
double getArea() {
return 3.14 * radius * radius;
}
public Circle(int r) {
radius = r;
}
}
public static void main(String args[]) {
Circle pizza = new Circle(5);
System.out.println(pizza.getArea());
Circle donut = new Circle();
//무조건 생성되는 생성자와의 표현이 다르므로 객체를 생성 할 수 없음.
System.out.println(donut.getArea());
}