정의
객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드이며
객체가 생성되는 순간에 자동으로 호출된다.
선언
먼저 생성자 선언에 앞서 클래스 이름과 멤버함수는 다음과 같다.
public class Circle
{
int radius;
String name;
[생성자 선언 부분]
}
다음은 [생성자 선언 부분] 에 들어갈 코드이다.
public Circle(){
radius = 1;
name = "";
}
→ 매개변수 없는 생성자
public Circle(int r, String n){
radius = r;
name = n;
}
→ 매개변수를 가진 생성자
위와 같은 내용을 토대로 보면
- 생성자 이름은 클래스 이름과 동일한 것을 알 수 있다.
- 생성자는 여러 개 작성할 수 있다. (매개변수가 없는 생성자와 있는 생성자)
- 생성자에 리턴 타입을 지정할 수 없다.
다음은 코드를 통해 직접 알아보는 과정이다.
여기서 객체 a 는 기본 매개변수가 없는 생성자를 호출하였고 객체 b 는 매개변수가 있는 생성자를 호출하여 radius 값이 3이고 name 값이 "안녕" 이라는 문자열을 갖도록 초기화하였다.
다음 코드에서는 생성자가 없이도 객체 생성에 있어서 컴파일 오류가 일어나지 않는 것을 알 수 있는데
그 이유는 생성자가 하나도 없는 경우 컴파일러가 기본 생성자를 자동으로 생성하기 때문이다.
기본 생성자란? 매개 변수와 실행 코드가 없이 단순 리턴하는 생성자이다.
또한 기본 생성자는 디폴트 생성자라고도 불린다.
class Circle{
public Circle(){ }
}
→ 다음 코드에서 public Circle() { } 이 기본생성자이다.
하지만 기본 생성자가 자동으로 생성되지 않는 경우가 있는데 다음 코드를 통해 알아보자
→ 코드를 보면 매개변수가 있는 생성자가 하나 있는 것을 알 수 있는데 이런 경우는 기본 생성자가 자동으로 생성되지 않는다.
결론 : 1. 생성자의 이름은 클래스 이름과 동일하다.
2. 생성자는 여러 개 작성할 수 있다.(오버로딩)
3. 생성자는 객체를 생성할 때 한 번만 호출된다.
4. 생성자에 리턴타입을 지정할 수 없다.
5. 생성자의 목적은 객체가 생성될 때, 필요한 초기 작업을 위함이다.
6. 생성자가 하나도 없는 경우 컴파일러가 기본 생성자를 자동으로 생성한다.
7. 생성자가 하나라도 있는 클래스에는 컴파일러가 기본 생성자를 생성하지 않는다.