728x90
생성자 this()
생성자에서 다른 생성자 호출할 때 사용
코드 중복을 제거할려고 this() 사용
원래 코드는 Car(color, “auto”, 4)로 호출해야함
this()생성자를 사용하므로써 이렇게 this(color, “auto”, 4)
코드의 중복
Car() { // Car()의미는 () 안에 매개변수를 아무 값도 지정하지 않았으면
// 디폴트 값으로 아래의 세가지를 넣으라는 것
color = "white";
gearType = "auto";
door = 4;
}
이미지 왼쪽의 중복된 코드(변경 전)
class Car{
String color;
String gearType;
int door;
//////////////////////////////////////////////////////////
Car() { // 1번 Car()
color = "white";
gearType = "auto";
door = 4;
}
Car(String c, String g, int d){ // 2번 Car()
color = c;
gearType = g;
door = d;
}
} // 1번 Car()와 2번 Car()가 같은 코드로 중복(bad)
이미지 오른쪽에 코드의 중복을 제거한 코드(변경 후)
class Car{
String color;
String gearType;
int door;
//////////////////////////////////////////////////////////
Car() {
// Car("white","auto",4);
this("white","auto",4); // 바로 Car생성자의 매개변수로 값 대입
} // 중복 제거(good)
Car(String c, String g, int d){
color = c;
gearType = g;
door = d;
}
}
참조변수 this.
인스턴스 자신을 가리키는 참조변수(reference variable)
특징
인스턴스 메서드(생성자 포함)에서만 사용 가능
- 클래스 메소드(static 메소드)에서 사용 불가
지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용
인스턴스의 주소가 저장되어있다
모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재한다(생략 가능)
- 전역변수와 지역변수 구분을 위해 쓰는 경우는 생략하면 에러는 아니나 지역변수 = 지역변수;가 되버려서 의미x
- this를 선언안해도 사용가능. 선언한 적 없는데 사용할 수 있는 변수
ex)
long a ,b;
참조변수 long a ,b의 진짜 이름은 this.a, this.b
long add() {
return a + b; // return this.a + this.b;
728x90
반응형
'JAVA > 자바의 정석 기초편(2020)' 카테고리의 다른 글
[자바의 정석 - 기초편] ch6-38~41 변수의초기화, 멤버변수의 초기화 (0) | 2022.02.20 |
---|---|
[자바의 정석 - 기초편] ch6-8 객체배열 (0) | 2022.02.20 |
[자바의 정석 - 기초편] ch6-32~35 생성자, 기본 생성자 (0) | 2022.02.19 |
[자바의 정석 - 기초편] ch5-8,9 배열의활용(1)~(2) (0) | 2022.02.19 |
[자바의 정석 - 기초편] ch5-4,5 배열의 길이, 배열의 초기화 (0) | 2022.02.19 |