자바의정석

[자바의 정석 - 기초편] ch6-36,37 생성자 this(), 참조변수 this

유호야 2022. 3. 10. 17:44
반응형

ch6-36 생성자 this()

: 생성자에서 다른 생성자 호출할 때 사용!
: 다른 생성자 호출시 첫 줄에서만 사용 가능!

오버로딩할 때 이름이 같은 메서드들은 하는 일이 같은 경우...

생성자도 이름이 같지만 모두 iv의 초기화라는 같은 기능이 있다.

코드의 중복을 제거하기 위해서 이렇게 생성자들끼리 호출하는 경우가 생긴다.

 

 


 

package ch06;

public class Constructor_Ex {
	
	
	public static void main(String args[]) {
//		Car car = new Car("blue", 2022, "auto");
		Car car = new Car();
		System.out.println(car.color);
	}
		
}


class Car {
	
	String color;
	int year;
	String gearType;
	
	Car() {
		this("black", 2020, "auto");
	}
	
	Car(String c, int y, String g) {
		color = c;
		year = y;
		gearType = g;
	}
}

 


ch6-37 참조변수 this (인스턴스변수)

this() 생성자.....

괄호 붙지 않은 this 는 참조변수

비슷하게 생각했지만, 전혀 다르다

- 객체 자신을 가리키는 참조변수
- 인스턴스 메서드(생성자 포함)에서 사용가능
- 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용

같은 클래스이기 때문에 생략했던 부분을 
참조변수.변수이름

귀찮아서 생략했었던 부분

 


 

참조변수이기 때문에 인스턴스 주소가 저장되어 있다.
모든 인스턴스메서드에 지역변수로 숨겨진 채로 존재한다. 

this와 this()는 비슷하게 생겼을 뿐, 완전히 다른 것이다. this는 '참조 변수' 이고, this()는 '생성자'이다.

클래스 내 long a, long b // this.a 와 this.b가 실제 이름이다. 

인스턴스 변수와 지역변수가 구분되지 않을 때 this를 명시함으로써 구분해주는 역할을 할 수 있다.

this는 인스턴스 메서드에서만 사용 가능하다. 

this는 인스턴스 자신을 가리키는 참조변수이기 때문에 
static 메서드에서는 사용 불가능

 

반응형