✔ 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
(여기서 말하는 인스턴스란 객체(iv의 묶음)즉 인스턴스 변수를 초기화 한다는 것이다🤗)
즉, iv 초기화를 편하게 하기 위해서 사용한다
//객체 생성
Time t = new Time();
//iv 초기화
t.hour = 12;
t.minute = 34;
t.second = 56;
//위에 처럼 하게 된다면 번거롭기 때문에 아래와 같이 하는게 직관적이고 좋다
//생성자 호출(변수 초기화 하고 원하는 값 세팅)
Time t = new Time(12, 34, 56);
//생성자를 사용하기 위해서는 만들어서 추가해줘야 편리하게 사용 가능하다
클래스 이름(타입 변수명, 타입 변수명, ...){ //인스턴스 생성 시 수행될 코드, // 주로 인스턴스 변수의 초기화 코드를 적는다 }
✔ 예시
class Card{
Card(){//매개변수 없는 생성자
//인스턴스 초기화 작업
}
Card(String kind, int number){//매개변수 있는 생성자
//인스턴스 초기화 작업
}
}
class Data_1{
int value;
}
class Data_2{
int value;
Data_2(int x){
value = x;
}
}
class Ex{
public static void main(Strint args[]){
Data_1 d1 = new Data_1();
Data_2 d2 = new Data_2(); //compile error 발생!!
//Data_2() 이름을 찾지 못하겠다고 에러가 뜬다
}
}
✔ 원래 생성자가 하나도 없을 때, 컴파일러가 기본 생성자를 자동 추가해줘서 Data_1은 에러가 나지 않았지만,
Data_2는 하나의 생성자를 작성해주었기 때문에 기본 생성자가 만들어지지 않아서 에러가 났다
class Data_2{
int value;
Data_2(){} //기본 생성자 추가
Data_2(int x){
value = x;
}
}
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);
✔ 위에 처럼 코드를 작성하면