재밌고 어려운 IT를 이해해보자~!
Section 09. 생성자 본문
01. 생성자의 특징
생성자란 ?
객체를 생성할 때 호출되어 객체의 멤버변수 초기화를 담당하는 특별한 메서드이다.
생성자는 일반 메서드와 달리 반환타입이 없으며, 메서드의 이름은 클래스 이름과 동일하다.
기본 생성자
클래스(매개변수1,매개변수2..) {
}
public class Snack {
int price;
Snack() { //기본 생성자
}
}
기본 생성자는 클래스 생성시 자동호출 되어 숨어있지만, 직접 입력할 수도 있다.
생성자 선언 이유
생성자를 통해서 객체를 메모리에 올림과 동시에 객체 멤버의 데이터를 초기화할 수 있으며, 매개변수를 받는 것도 가능하다.
Snack 마다 가격이 다르다면 생성자를 통해 멤버변수 price를 각자의 가격으로 초기화 하는 것이 효율적!
02. 생성자 오버로딩
오버로딩
생성자에 전달할 매개변수가 부족하면 강제로 값을 채워줘야할까? 아니다. 우리는 생성자 오버로딩을 통해 이를 해결할 수 있다.
public class Phone {
String brand;
int series;
String color;
Phone(String b, int s) {
brand = b;
series = s;
}
Phone(String b, int s, String c) {
brand = b;
series = s;
color = c;
}
}
짜잔~ 오버로딩을 통해 다양한 객체 생성 가능!
매개변수를 2개, 3개 둘다 입력 가능하다.
03. this 와 this()
this
중괄호 {} 안에서 사용하기 위해 선언된 지역변수가 클래스 필드보다 우선순위가 높아 name(필드) = name (지역) 이런식으로 작성하면 둘다 지역변수로 인식해버린다!
따라서 우리는 객체 자기자신 스스로를 참조하는 this 키워드를 사용한다.
this 필드 = 매개변수명;
this()
생성자 오버로딩을 할때 this() 메서드를 사용해 가장 많은 매개변수를 가지고 있는 생성자를 호출해서 사용가능하다.
public class Phone {
String brand;
int series;
String color;
Phone(String b, int s) {
this(b, s, "오버로딩");
}
Phone(String b, int s, String c) {
brand = b;
series = s;
color = c;
}
}
왜 책은 매개변수가 2개인 애를 this로 매개변수 3개인 애한테 호출하는 예제를 보여줬을까 ?!
'JAVA Book Study' 카테고리의 다른 글
Section 11. 다형성과 타입 변환 (0) | 2023.12.29 |
---|---|
Section 10. 상속 (0) | 2023.12.29 |
Section 08. 메서드 (0) | 2023.12.26 |
Section 07. 클래스 (0) | 2023.12.17 |
Section 06. 배열 (0) | 2023.12.17 |
Comments