생성자 (Constructor)
📚 참고
자바의 정석 기초편 (객체지향개념만)
생성자
- 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
- 인스턴스 생성 시, 수행할 작업(예를 들어, iv 초기화)에 사용
1. 객체 생성
Time t = new Time();
2. iv 초기화
t.hour = 12;
t.minute = 34;
t.second = 56;
3. 1, 2번 과정 한번에 수행
- 생성자 추가를 통해 생성자를 호출하여 간단한 코드로 객체를 초기화 할 수 있다.
Time t = new Time(12, 34, 56);
생성자 생성
- 이름이 클래스명과 같아야 한다.
- 리턴값이 없지만 void는 안 붙인다. (iv 초기화만 해주면 되니까 반환값이 필요없음)
- 모든 클래스는 반드시 생성자를 가져야 한다.
클래스명(타입 변수명, 타입 변수명, ...) {
// 인스턴스 생성 시, 수행될 코드
// 주로 인스턴스 변수의 초기화 코드를 작성
}
// 생성자 오버로딩
class Card {
// 매개변수 없는 생성자
Card() {
// 인스턴스 초기화 작업
}
// 매개변수 있는 생성자
Card(String kind, int number) {
// 인스턴스 초기화 작업
}
}
기본 생성자 (Default Constructor)
- 매개변수가 없는 생성자
- 생성자가 하나도 없을 때만 컴파일러가 자동 추가
// 생성자 0개 (생성자가 하나도 없으니 컴파일러가 기본 생성자를 자동 추가)
class Data_1 {
int value;
}
// 생성자 1개
class Data_2 {
int value;
// Data_2() {}
// 매개변수가 있는 생성자
Data_2(int x) {
value = x;
}
}
class Ex6_11 {
public static void main(String[] args) {
Data_1 d1 = new Data_1();
// 🚩compile error
// cannot resolve symbol => Data_2 class에 기본 생성자를 만들어줌
Data_2 d2 = new Data_2();
}
}
매개변수가 있는 생성자
class Car {
String color;
String gearType;
int door;
// 기본 생성자
Car() {}
// 매개변수가 있는 생성자
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
}
Car c = new Car();
c.color = "white";
c.gearType = "auto";
c.door = 4;
// 생성자의 필요 이유 => 코드가 간결해진다.
Car c = new Car("white", "auto", 4);
- new 연산자가 해당 클래스를 스캔 후, 객체를 만든다.
- 그 후, 생성자에 의해 객체가 초기화 된다.
'JAVA > 객체지향개념' 카테고리의 다른 글
변수 초기화 (0) | 2021.03.13 |
---|---|
생성자 this(), 참조변수 this (0) | 2021.03.13 |
오버로딩 (Overloading) (0) | 2021.03.11 |
Instance 메서드 vs Static 메서드 (0) | 2021.03.11 |
기본형 매개변수, 참조형 매개변수 차이점 (0) | 2021.03.09 |
댓글
이 글 공유하기
다른 글
-
변수 초기화
변수 초기화
2021.03.13 -
생성자 this(), 참조변수 this
생성자 this(), 참조변수 this
2021.03.13 -
오버로딩 (Overloading)
오버로딩 (Overloading)
2021.03.11 -
Instance 메서드 vs Static 메서드
Instance 메서드 vs Static 메서드
2021.03.11