6.8.1 생성자
- 인스턴스 초기화에 주로 사용되는 메서드
- 생성자는 클래스의 이름과 같아야 한다.
- 생성자는 리턴 값이 없다.
Card card = new Card();
1. 연산자 new에 의해 Card의 인스턴스가 heap영역에 생성된다.
2. 생성자 Card()가 호출되어 (초기화)수행된다.
3. 인스턴스 주소가 참조변수 card에 저장된다.
6.8.2 기본 생성자
- 컴파일러가 클래스 내부에 '생성자'가 없을 경우 자동으로 생성자를 만들어 주는 것이 기본 생성자이다.
//컴파일 에러
class Data{
int value;
class Data(int a){
value = a;
}
}
class MainClass{
public static void main(String[] args){
Data d = new Data();
}
}
/*
Data 클래스 내부에 생성자가 존재하여 기본 생성자인 Data(){}가 만들어 지지 않는다.
*/
6.8.3 매개변수가 있는 생성자
- 생생자에 매개변수를 선언하여 호출 시 넘겨받아 인스턴스 초기화 작업에 사용 가능
class Data{
int value;
Data (){}
class Data(int a){
value = a;
}
}
class MainClass{
public static void main(String[] args){
Data d = new Data(4);
}
}
6.8.4 생성자에서 다른 생성자 호출하기
- 생성자간의 호출시 this를 사용하여 호출
- 생성자간의 호출은 반드시 첫 줄에서만 가능
- 'this.변수'는 인스턴스 변수(클래스에서 정의한 변수)
class Car{
String color;
String gearType;
int door;
Car(){
this("white", "auto", 4);
}
Car(String color){
this(color, "auto", 4);
}
Car(String color, String gearType, int door){
this.color = color;
this.gear = gear;
this.door = door;
}
}
6.8.5 생성자를 이용한 인스턴스 복사
- 각 인스턴스는 '인스턴스 메서드'와 '클래스 변수'가 동일. '인스턴스 변수'만 차이가 있음
class Car{
String color;
String gearType;
int door;
Car(){
this("white", "auto", 4);
}
Car(Car c){
this.color = c.color;
this.gearType = c.gearType;
this.door = c.door;
}
}
class MainClass{
public static void main(String[] args){
Car car1 = new Car();
Car car2 = new Car(car1);
}
}
'자바의 정석 정리' 카테고리의 다른 글
자바의 정석 - 7.1 상속 (0) | 2022.06.13 |
---|---|
자바의 정석 - 6.9 변수의 초기화 (0) | 2022.06.10 |
자바의 정석 - 6.7 오버로딩 (0) | 2022.06.10 |
자바의 정석 - 6.6 클래스와 인스턴스 (0) | 2022.06.10 |
자바의 정석 - 6.5 재귀호출 (0) | 2022.06.10 |