생성자(Constructor)는 클래스에서 new 연산자로 객체를 생성할 때 객체의 초기화를 담당하는 부분이다. 객체의 초기화라고 하면 클래스 안에 있는 필드값을 초기화하거나, 클래스 내의 메소드들을 호출해서 사용 가능한 준비 상태로 만드는 것을 말한다. 이 클래스의 생성자를 호출하지 않고는 객체를 생성하지 못한다. static이라는 예외가 있긴 하지만 static은 추후에 알아보도록 하겠다.
모든 클래스에는 반드시 생성자가 하나 이상 있어야 한다. 만약 클래스에서 생성자 선언을 건너뛰었다면 컴파일러는 클래스 내부에 아무 내용도 없는 기본 생성자를 자동으로 추가한다. 따라서 생성자가 없다면 안에 아무 내용도 없는 기본 생성자가 호출된다고 보면 된다.
생성자는 메소드와 비슷하게 생겼으나 리턴 타입이 없고, 클래스의 이름과 동일하다. 하지만 메소드와 비슷한 점으로는 생성자도 매개 변수를 받을 수 있다는 것인데 여러 개의 매개 변수를 받을 수도 있다. 단, 이때는 객체를 생성할 때 new 연산자를 통해 해당 생성자의 매개변수와 맞는 구조를 입력해주어야 한다. 아래의 예시를 보겠다.
public class Person {
//
Person(String name, int age){
//
}
}
위와 같은 클래스(중간에 불필요한 내용은 생략했다고 치겠다)가 있다고 가정했을 때 객체를 생성하려면
- Perseon me=new Person("Kim", 25); 이런식으로 구조에 맞는 매개 변수를 입력해주어야 한다.
이전에 생성자의 역할에는 필드의 초기화도 있다고 얘기 했었다. 그렇다면 이게 정확히 무엇을 의미하는지 알아보겠다. 우선 아래의 예시와 같은 코드가 있다고 하겠다.
public class Person {
String name,
int age,
int height;
Person(String n, int num, int h){
name=n;
age=num;
height=h;
}
}
위의 코드를 살펴보면 클래스의 이름은 Person이고 필드로는 String 형의 name이 있다. int형으로는 age, height가 있다. 만약 위의 클래스에서 생성자가 매개 변수가 없는 단순 생성자였으면 이 필드들은 각각 null값과 0으로 초기화 될 것이다. 하지만 생성자에 매개 변수를 부여함으로써 매개 변수로 입력받은 n을 name, num은 age, h를 height에 대입하라는 내용이 된다. 따라서 객체를 생성할 때는 아래와 같이 생성하면 된다.
Person me=new Person("Kim", 22, 180);
'프로그래밍 > JAVA' 카테고리의 다른 글
생성자 오버로딩(Overloading) (0) | 2021.04.30 |
---|---|
this (0) | 2021.04.30 |
클래스의 구성 요소 (0) | 2021.04.29 |
객체 생성 & 클래스 변수 (0) | 2021.04.29 |
클래스 선언 (0) | 2021.04.29 |