[작성일: 2023. 01. 25]
생성자(Constructor)
- 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
- 객체(iv묶음) 초기화 메서드
- {} 괄호 안에 작업할 문장을 넣으면 됨.
- 번거로운 과정을 직관적으로, 편리하게 초기화할 수 있음.
* 기존 초기화
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56;
* 생성자 호출(사용)
Time t = new Time(12, 34, 56); // 생성자를 만들어줘야 사용할 수 있음.
- 생성자의 이름과 클래스 이름이 같아야 함.
- 생성자인 경우는 반환값이 없기 때문에 리턴값이 없음. (void 안 붙임)
- 모든 클래스는 반드시 1개 이상의 생성자를 가져야 함.
- Card c = new Card(); ➡️ 생성자 호출(기본 생성자)
- 생성자가 하나도 없을 땐 컴파일러가 자동으로 추가해 줌.
클래스 이름(타입 변수명, 타입 변수명, ...) {
// 인스턴스 생성 시 수행될 코드,
// 주로 인스턴스 변수의 초기화 코드를 적음.
}
class Card { // 클래스 이름은 Card
...
Card() { //매개변수 없는 생성자.
// 인스턴스 초기화 작업
}
Card(String kind, int number) { // 매개변수 있는 생성자
// 인스턴스 초기화 작업
}
}
// 생성자 오버로딩
// 같은 이름의 (생성자)메서드 여러 개 정의
기본 생성자(Default Constructor)
- 매개변수가 없는 생성자
클래스 이름() {} // 기본 생성자
Point() {} // Point 클래스의 기본 생성자
- 생성자가 하나도 없을 때만, 컴파일러가 자동으로 추가해줌.
- 웬만하면 기본 생성자를 직접 만들어주는 것이 좋음.
💡 기본 생성자 작성 습관 만들기!
class Data_1 {
int value;
// Data_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();
Data_1 d2 = new Data_2(); // 기본 생성자 호출, 컴파일 에러 발생
// The constructor Data_2()) is undefined
}
}
매개변수가 있는 생성자
class Car {
String color; // 색상
String gearType; // 변속기 종류
int door; // 문 갯수
// iv
Car() {} // 기본 생성자
Car(String c, string g, int d) { // 매개변수가 있는 생성자
color = c;
gearType = g;
door = d;
}
}
생성자가 없으면 하나하나 초기화해줘야 함.
// iv 초기화
Car c = new Car();
c.color = "WHITE";
c.gearType = "AUTO";
c.door = 4;
⬇
생성자 호출
Car c = new Car("white", "auto", 4);
Study
- 참조변수 c가 만들어짐.
- new 연산자가 클래스를 보고 객체 3개를 생성함.
- Car 생성자가 호출됨. (객체 초기화)
- Car(String c, String g, int d)에 저장됨.
- color = c;
- gearType = g;
- door = d; 에 들어감
- 6. c에 대입
🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.