반응형
this
public class Phone{
// 필드
String company = "Samsung";
String model;
int price;
// 생성자
public Phone(String model, int price){
this.model = model; // this.필드 = 매개변수
this.price = price; // this.필드 = 매개변수
}
}
다음과 같이 Phone 클래스에 필드를 선언하고 그 밑에 생성자를 선언했다. 생성자 매개변수로 model, price를 가진다.
여기서 'this.필드' 이렇게 선언하는 부분이 있는데, 이것은 매개변수와 필드값을 구분하기 위해 객체 자신을 참조한다는 의미로 this를 붙이는 것이다.
상기 코드에서 알 수 있듯이 생성자 매개변수와 필드의 이름이 동일하기 때문에 생성자 내부에서 해당 필드에 접근할 수 없다. 왜냐하면 동일한 이름의 매개 변수가 사용 우선순위기 높기 때문이다. 이를 해결하기 위해 'this.필드' 이렇게 사용해 필드와 매개변수를 구분한다.
this()
this() 메소드는 생성자 내부에서만 사용할 수 있으며, 같은 클래스의 다른 생성자를 호출할 때 사용한다.
생성자 오버로딩이 많아질 경우 매개 변수의 수만 다르고 필드 초기화 내용이 비슷한 경우 코드를 좀 더 간결하게 작성하기 위해 사용한다.
클래스( [매개변수 선언은 optional] ){
this(매개변수 혹은 값); // 클래스의 다른 생성자를 호출한다.
}
public class Phone{
// field
String company = "Samsung";
String model;
int price;
int productionYear;
// constructor
Phone(){}
Phone(String model){
this(model, 999, 2021);
}
Phone(String model, int price){
this(model, int, 2021);
}
Phone(String model, int price, int productionYear){
this.model = model;
this.price = price;
this.productionYear = productionYear;
}
}
맨 아래에 위치한 Phone 클래스의 생성자를 Phone(String model), Phone(String model, int price) 생성자가 호출한다.
참고
반응형
'Programming > Java' 카테고리의 다른 글
[Java] 2차원 배열의 행(row) 길이와 열(column) 길이 (0) | 2021.09.25 |
---|---|
[Java] for문 동작 순서 (0) | 2021.09.25 |
[Java] main 메소드 (0) | 2021.09.09 |
[Java] 기본 데이터 타입(Primitive Data Types) (0) | 2021.09.07 |
[Java] 자바 표준 입출력 제어 (0) | 2021.09.04 |