java/ㄴ CHAPTER 6. 객체지향 프로그래밍 1
CHAPTER 6. (7) this란? (this(), 명시적 초기화 포함) ★
Astaroth아스
2020. 3. 23. 19:19
this()
- 생성자 안에서 다른 생성자 호출
조건
- 생성자 이름으로 클래스이름 대신 this 사용
- 호출 시 반드시 첫 줄에서만 호출 가능
ex. ★
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public class Car2 {
String color;
String gearType;
int door;
Car2() {
this("white", "auto", 4);
}
Car2(String color) {
this(color, "auto", 4);
}
Car2(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
|
장점
- 유지보수 쉬워짐
this
- 객체(인스턴스) 자신을 가리키는 참조변수
- 생성자의 매개변수로 선언된 이름이 인스턴스 변수와 같은 경우 서로 구별이 안됨
=>이럴때 this 사용
ex.
this.color 인스턴스 변수
color 지역변수
= 서로 구별 가능
= 서로 명확, 이해가 쉬움
조건
- 인스턴스 멤버만 사용 가능
ㄴ 왜?
= static 메서드는 인스턴스를 생성하지 않고 호출 가능(인스턴스가 존재하지 않을 수도 있기 때문)
※ 생성자를 포함한 모든 인스턴스 메서드는 this가 지역변수로 숨겨진 채로 존재
this this() 차이? ★
ㄴ this : 인스턴스 자신을 가리키는 참조변수. 인스턴스 주소 저장
ㄴ this() : 생성자, 같은 클래스의 다른 생성자 호출 시 사용
= 서로 완전히 다른 것. this는 참조 변수, this()는 생성자
※ 멤버변수(클래스 변수, 인스턴스 변수)는 초기화하지 않아도 자동으로 자료형에 맞는 기본값으로 초기화 되지만,
지역변수는 사용하기 전에 반드시 초기화 해야 함
※ 클래스 변수(cv)가 인스턴스 변수(iv)보다 먼저 초기화 됨
명시적 초기화
- 변수의 선언과 동시에 초기화하는 것