CH6-36,37 생성자 this(), 참조변수 this

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

생성자 this()는 생성자가 본인 메서드 바디에서 같은 클래스 내의 다른 생성자를 호출할때 사용하는 생성자이다. 이게 뭔소린지 당연히 모를 것이다. 예제를 보자.

Untitled

1번 Car2생성자와 2번 Car2생성자가 3번 Car2생성자를 본인 메서드 안에서 호출하고 있음. 이때는 클래스 명 대신 this라는 변수명으로 호출하게 문법이 되어있다. 왜일까. 어차피 같은 생성자 오버로딩이라 다 같은 이름일텐데..

this의 중요한 문법은, 메서드바디내에서 가장 첫 줄에서 호출해야 한다는 것임.

왜 이렇게 생성자 오버로딩을 this라는 문법을 도입해서까지 할까? 코드의 중복을 최대한 줄이기 위해서다. 사실 잘 와닿지는 않는다. 아직

아 이해되었다. 강의가 좋네 다음 예제를 보자.

Untitled

class Car내의 생성자 Car()를 생각해보자. 이 친구들은 객체 생성시 매개변수를 아무것도 입력하지 않으면, 위와 같이 iv들을 초기화해서 Car객체를 생성하게 되어있다. 즉 수동으로 만든 기본생성자다.(gta가 자꾸 생각난다.)

그리고 class Car내에는 객체 생성시 직접 인자를 입력해 iv초기화하는 생성자도 하나 따로 만들어놨다. 그냥 생성자.

이때 잘보면, class Car내의 생성자 두개가 코드가 거의 유사하다. 이때 코드의 중복을 줄이려고 this생성자를 사용하는 것임. 이러면 기본생성자가 그냥 생성자를 호출해 잘 써먹는다.

강의에서는 이름이 같은 생성자들에게 호출관계를 부여해 코드의 중복을 막는게 의의라고 함.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

참조변수 this

앞에서 배운 this()는 **생성자 this**이고, 이녀석은 괄호가 없다. **생성자 this()**와 **참조변수 this**는 아예 다른 관계이다. 연관짓는 순간 혼란스러워진다.

참조변수 this는 가장 기본적인 문법은, 인스턴스가 인스턴스 자신을 가리키는 참조변수라는 것임.