반응형
생성자(Constructor)란??
생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다
Time t = new Time(); // 객체 생성
// iv 초기화
t.hour = 12;
t.minute = 34;
t.second = 56;
Time t= new Time(12, 34, 56); // 생성자 호출
생성자는 메서드와 유사하지만 리턴값이 없다는 점이 다르다!
생성자의 조건
- 생성자의 이름과 클래스의 이름은 같아야 한다
- 생성자는 리턴값이 없다 (void 안씀)
※ 생성자도 메서드이기 때문에 리턴값이 없다는 의미의 void를 붙여야 하지만,
모든 생성자가 리턴값이 없으므로 void는 생략한다
Card c = new Card();
- 연산자가 new에 의해서 메모리에 Card 클래스의 인스턴스가 생성된다
- 생성자 Card() 호출 후 수행
- 연산자 new 의 결과로, 생성된 Card 인스턴스의 주소가 반환되어 참조변수 c에 저장
※ 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다!
'클래스 이름( )'이 생성자!
기본 생성자(defualt Constructor)란?
- 매개변수가 없는 생성자
- 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 자동으로 추가해준다!
- 그래서 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다
※ 기본 생성자가 컴파일러에 의해 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을때 뿐이다!
class Data1 {
int value;
}
class Data2 {
int value;
// Data2() {} 기본 생성자
Data2(int x){ // 매개변수가 있는 생성자, 기본 생성자를 추가해줘야 에러가 안생김!!
value = x;
}
}
class ConstructorTest{
public static void main(String[] args){
Data1 d1 = new Data1();
Data2 d2 = new Data2(); // 컴파일 에러 발생
}
}
매개변수가 있는 생성자
생성자도 메서드처럼 매개변수를 선언하여 호출 시 값을 넘겨받아 인스턴스의 초기화 작업에 사용할 수 있다
class Car{
String color; //색상
String gearType; // 변속기 종류 - auto, manual
int door; //문의 개수
Car(){} // 생성자
Car(String c, String g, int d){ // 생성자
color = c;
gearType = g;
door = d;
}
}
위의 iv를 초기화 하면 2가지 방법으로 초기화 할 수 있다!
방법1
Car c = new Car();
// iv 초기화
c.color = "white";
c.gearType = "auto";
c.door = 4;
방법2
Car c = new Car("white", "auto", 4);
방법2를 사용하면 여러줄 코드 작성해야 할거를 한 줄로 쓸 수 있다!!
둘다 맞는 방법이지만 코드의 간결화를 위해 방법2로 코드 작성하도록 하자!
반응형
'Programming > Java, Spring' 카테고리의 다른 글
[JAVA / JSP] 자바 빈즈(Java Beans)란? / 빈즈(Beans)의 장점 / 빈즈(Beans) 클래스 구조 (0) | 2022.05.15 |
---|---|
[JAVA] this()와 this 의 차이점! (0) | 2022.05.14 |
[JAVA] 오버로딩(overloading)이란?? 메서드 오버로딩 / 오버로딩의 조건 / 오버로딩의 예 (0) | 2022.05.10 |
[JAVA] 기본형 매개변수와 참조형 매개변수 (0) | 2022.05.07 |
[JAVA] 클래스 메서드(Static메서드)와 인스턴스 메서드(instance method) (0) | 2022.05.04 |