- 자바의 정석 (기본편)을 참고했습니다.
- 복습을 위한 게시글입니다.
- 소스에 오타가 있을 수 있습니다. ^^:;
생성자 호출하기
생성자 또한 서로 호출이 가능하지만 조건 두 가지를 충족시켜야 한다.
1. 생성자 이름으로 클래스 이름을 쓰는 대신 this를 사용한다,
2. 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.
- 첫 줄에 적어야 하는 이유는, 생성자의 초기화 작업 도중 다른 생성자를 호출한다면 초기화 작업이 무의미해질 수
있기 때문이다.
생성자 호출 오류 코드
첫 째, 다른 생성자 호출 시 두 번째 줄에서 호출
둘 째, 클래스 이름 대신 this를 사용하지만 Car을 사용해 호출
class Car {
String color;
String gearType;
int door;
// 매개변수가 있는 생성자
Car(String Car) {
door = 5;
Car(color, "auto", 4); // 에러 원인
}
// 중략..
}
생성자에서 다른 생성자 호출 예제 코드
첫 번째 생성자와 두 번째 생성자는 모두 세 번째 생성자를 호출하고 있다.
첫 줄에서 호출하고 있고, 클래스 이름 대신 this를 사용해서 오류없이 잘 작동되는 것을 알 수 있다.
두 번째 생성자에서 확인 할 점은, 매개변수가 있는 생성자이지만 세 번째 생성자의 gearType, door 초기화를 따르되
color는 "Blue"라는 매개변수를 직접 받아 초기화하는 것을 알 수 있다.
class Ex6_13 {
public static void main(String args[]) {
Car c = new Car(); // 기본 생성자 호출
Car c1 = new Car("Blue"); // 매개변수가 하나인 생성자 호출
System.out.println(c.color+","+c.gearType+","+c.door);
System.out.println(c1.color+","+c1.gearType+","+c1.door);
}
}
class Car {
String color;
String gearType;
int door;
// 첫 번째 생성자, 세 번째 생성자 호출
Car() {
this("White", "auto", 4);
}
// 두 번째 생성자, 세 번째 생성자 호출, color 제외 나머지 사용
Car(String color) {
this(color, "auto", 4);
}
// 세 번째 생성자
Car(String color, String gearType, int door) {
this.color = color; // this.color는 인스턴스 변수, color는 지역 변수
this.gearType = gearType; // 이하 동문
this.door = door; // 이하 동문
}
}
/*
결과
White, auto, 4
Blue, auto, 4
*/
참조변수 this
생성자 내부에서 인스턴스를 초기화 시킬 때, 인스턴스 변수와 지역변수를 구분하기 위해 사용한다.
인스턴스 변수와 지역변수의 이름이 같은 경우가 많기 때문에 이름을 같게 하되 인스턴스 변수에 this를 붙여
구별되도록 하는 편이 의미가 더 명확하고 이해하기도 쉽다.
참조변수 this 예제 코드
this가 붙은 변수는 인스턴스 변수, 등호 오른쪽의 변수는 지역변수이다.
받아온 매개변수의 값을 인스턴스 변수에 저장한다.
class Car {
String color;
String gearType;
int door;
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
'JAVA' 카테고리의 다른 글
[JAVA 복습] 참조변수 super와 조상의 생성자 super() (0) | 2021.09.02 |
---|---|
[JAVA 복습] 상속에 대해 (0) | 2021.09.02 |
[JAVA 복습] 기본 생성자와 매개변수가 있는 생성자 (0) | 2021.08.31 |
[JAVA 복습] 오버로딩 / 오버라이딩 비교 (0) | 2021.08.31 |
[JAVA 복습] 기본형, 참조형 매개변수의 비교 (0) | 2021.08.31 |