생성자 this()
생성자에서 다른 생성자 호출할 때 사용
- 다른 생성자 호출시 첫 줄에서만 사용 가능
참조변수 this
인스턴스 자신을 가리키는 참조변수
- 인스턴스 메서드(생성자 포함)에서 사용가능
- 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용
같은 클래스 내에서는 원래 this 생략 가능하지만 iv와 lv 이름이 같을 때는 구별하기 위해 this 생략 X
참조변수 this와 생성자 this()
this : 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있음, 모든 인스턴스 메서드에 지역변수로 숨겨진 채 존재
this(), this(매개변수) : 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용 (클래스 이름대신 사용)
변수의 초기화
지역 변수(lv) = 사용 전 수동 초기화 해야함
멤버 변수(iv, cv) = 자동 초기화
멤버 변수의 초기화
1. 명시적 초기화 (=)
간단 초기화 / iv 초기화 / cv 초기화
class Car {
int door = 4; // 기본형(primitive type) 변수의 초기화
Engine e = new Engine(); // 참조형(reference type) 변수의 초기화
}
* 참조형 변수 : null 기본값 or 객체 주소
2. 초기화 블럭
복잡 초기화 / iv 초기화 / cv 초기화
여러문장 넣을 때 사용
- 인스턴스 초기화 블럭 : { }
- 클래스 초기화 블럭 : static { }
3. 생성자
복잡 초기화 / iv 초기화
Car (String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
초기화 시점
클래스 변수 초기화 시점 : 클래스가 처음 로딩될 때 단 한번 (= 메모리에 올라갈 때)
인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때 마다
초기화 순서
클래스 변수 (cv) ➔ 인스턴스 변수 (iv)
자동 (0) ➔ 간단 (=) ➔ 복잡 (static{} / 생성자)
'JAVA > 자바의 정석' 카테고리의 다른 글
[자바의 정석 - 기초편] 7. (2) 오버라이딩 (overriding) / 오버로드 (overload) (0) | 2023.11.29 |
---|---|
[자바의 정석 - 기초편] 7. (1) 상속 (Inheritance) / 포함 (composite) / 단일 상속 / Object 클래스 (0) | 2023.11.29 |
[자바의 정석 - 기초편] 6. (8) 생성자 / 생성자 규칙 / 기본 생성자 / 매개변수가 있는 생성자 (0) | 2023.11.29 |
[자바의 정석 - 기초편] 6. (7) 오버로딩 (0) | 2023.11.29 |
[자바의 정석 - 기초편] 6. (6) static 메서드 / 인스턴스 메서드 (0) | 2023.11.28 |