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)보다 먼저 초기화 됨



명시적 초기화
 - 변수의 선언과 동시에 초기화하는 것