코딜기
[Java] 생성자(Constructor) 본문
반응형
생성자(Constructor)란?
- 자바에서 객체를 생성할 때 호출하는 것이 생성자입니다.
- 한마디로 생성자는 객체를 생성하는 역할을 합니다.
생성자의 특징
- 생성자의 이름은 클래스의 이름과 대/소문자까지 완벽하게 동일해야 합니다.
- 객체를 생성할 때 반드시 호출해야 합니다.
- 일종의 메서드지만, 리턴 타입이 없고 리턴값은 주소값으로 고정되어 있습니다.
- 생성자를 하나도 선언하지 않으면, JVM이 매개변수가 없고, 내용이 없는 가장 기본 형태의 생성자를 하나 생성해 주기 때문에 생성자 선언 없이도 객체 생성은 가능합니다.
- 객체를 생성하는 기능뿐만 아니라, 객체 생성과 동시에 해야 할 일 (필드 초기화) 등을 진행할 수 있습니다.
- 생성자는 오버로딩(Overloading)이 가능합니다.
생성자 사용
- 펜 객체를 만드는 클래스를 정의하고, 속성을 선언한 후, 객체 생성과 초기화를 한 번에 처리할 수 있도록 생성자를 선언합니다.
- 만약 인자를 받는 생성자를 선언하면 기본 생성자는 자동으로 제공되지 않으므로, 기본 생성자가 필요하다면 직접 선언해야 합니다.
- 기본 생성자가 없이 매개값을 받는 생성자만 선언한 경우, 그 생성자를 통해서만 객체를 생성할 수 있으며, 기본 생성자를 통해 객체를 생성할 수는 없습니다.
- JVM이 기본 생성자를 자동으로 추가해 주는 경우는 클래스에 생성자가 전혀 선언되어 있지 않은 경우에 한합니다.
- 따라서 기본 생성자가 필요한 경우에는 명시적으로 선언하는 것이 좋습니다.
public class Pen {
String color;
int price;
int productId;
// 생성자를 선언하지 않으면 가장 기본 형태의 생성자를 하나 만들어 줍니다.
// 이게 가장 기본 형태의 생성자입니다.
// 클래스의 이름과 동일하고, 리턴 타입이 존재하지 않습니다.
Pen() {
}
// 생성자의 중복 선언(overloading)
// 매개변수의 개수, 타입, 전달 순서를 다르게 하면 중복해서 선언이 가능합니다.
Pen(String color, int price, int productId) {
this.color = color;
this.price = price;
this.productId = productId;
}
}
- 아래와 같이 생성자를 호출하는 동시에 객체를 생성할 수 있습니다.
- 미리 만들어져 있는 객체를 메서드로 받는 등 특별한 상황이 아니라면 대부분은 생성자를 호출함으로써 객체를 생성합니다.
public class Main {
public static void main(String[] args) {
// 우리가 평소에 객체 생성하는 방식이 바로 기본 생성자를 부르는 코드
// 매개값을 전달하지 않으면 기본 생성자를 호출합니다.
Pen redPen = new Pen();
redPen.color = "빨간색";
redPen.price = 1000;
redPen.productId = 1;
// 매개값을 받는 또 다른 생성자를 호출하는 코드
// 값을 전달하면, 생성자가 인수를 받아서 필드 초기화
// 매개변수는 순서, 타입, 갯수를 호출하고자 하는 생성자 형식에 맞게 작성해야 합니다.
Pen bluePen = new Pen("파란색", 1500, 2);
}
}
반응형
'Language > Java' 카테고리의 다른 글
[Java] static (static 필드, static 메서드) (0) | 2024.08.27 |
---|---|
[Java] 캡슐화 (Encapsulation) (0) | 2024.08.27 |
[Java] 정보은닉(Infomation Hiding) (1) | 2024.08.26 |
[Java] 객체 지향 프로그래밍 (Object-Oriented Programming, OOP) (0) | 2024.08.26 |
[Java] 가변 파라미터 (0) | 2024.08.26 |
Comments