본문 바로가기
자바 풀스택 공부

Day 15.

by seung_nari 2022. 1. 19.

this(), this

 

- 생성자의 이름으로 클래스이름 대신 this를 사용한다.

- 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.

 

class Car {
	String color;
	String gearType;
	int door;
	
	Car(){
		this("white", "auto", 4); // Car(String color, String gearType, int door)를 호출
	}
	
	Car(String color){
		this(color, "auto", 4);
	}
	Car(String color, String gearType, int door){
		this.color = color;
		this.gearType = gearType;
		this.door = door;
	}
}
public class CarTest2 {
	public static void main(String[] args) {
		Car c1 = new Car();
		Car c2 = new Car("blue");
		
		System.out.println("c1의 color= " + c1.color + ", gearType= " + c1.gearType + ", door = " + c1.door );
		System.out.println("c2의 color= " + c2.color + ", gearType= " + c2.gearType + ", door = " + c2.door );
	}
}

 

this.color는 인스턴스변수이고, color는 생성자의 매개변수로 정의된 지역변수로 서로 구별이 가능하다.

 

이처럼 생성자의 매개변수로 인스턴스변수들의 초기값을 제공받는 경우가 많기 때문에

매개변수와 인스턴스변수의 이름이 일치하는 경우가 자주 있다.

 

이때는 매개변수이름을 다르게 하는 것 보다 'this'를 사용해서 구별되도록 하는 것이

의미가 더 명확하고 이해하기 쉽다.

 

'this'는 참조변수로 인스턴스 자신을 가리킨다.

참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼,

'this'로 인스턴스변수에 접근할 수 있는 것이다.

 

하지만, 'this'를 사용할 수 있는 것은 인스턴스멤버뿐이다.

static메서드(클래스 메서드)에서는 인스턴스 멤버들을 사용할 수 없는 것처럼, 'this' 역시 사용할 수 없다.

 

왜냐하면, static 메서드는 인스턴스를 생성하지 않고도 호출될 수 있으므로

static메서드가 호출된 시점에 인스턴스가 존재하지 않을 수도 있기 때문이다.

'자바 풀스택 공부' 카테고리의 다른 글

Day 20.  (0) 2022.01.28
2차원 ArrayList  (0) 2022.01.28
Day 14.  (0) 2022.01.19
Day 13-2.  (0) 2022.01.19
Day 13.  (0) 2022.01.18

댓글