매개변수가 있는 생성자
생성자도 메서드처럼 매개변수를 선언하여 호출 시 값을 넘겨받아서 인스턴스의 초기화 작업에 사용할 수 있다. 인스턴스마다 각기 다른 값으로 초기화되어야 하는 경우가 많기 때문에 매우 유용하다.
// color, gearType, door - 인스턴스 변수
// Car() {}, Car(String c, String g, int d) {} - 생성자
class Car {
String color;
String gearType;
int door;
Car() {}
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
}
Car 인스턴스를 생성할 때 생성자 Car()를 사용한다면, 인스턴스를 생성한 다음에 인스턴스 변수들을 따로 초기화해주어야 하지만 매개변수가 있는 생성자를 사용한다면 인스턴스를 생성하는 동시에 원하는 값으로 초기화할 수 있음.
생성자를 잘 활용하면 보다 간결하고 직관적인 객체지향적인 코드를 작성할 수 있다.
인스턴스를 생성할 때는 다음의 2가지 사항을 결정해야 한다.
- 클래스 - 어떤 클래스의 인스턴스를 생성할 것인가?
- 생성자 - 선택한 클래스의 어떤 생성자로 인스턴스를 생성할 것인가?
class Car {
String color;
String gearType;
int door;
Car() {}
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
}
class paramConstructorExam {
public static void main(String[] args) {
Car c1 = new Car();
c1.color = "white";
c1.gearType = "auto";
c1.door = 4;
Car c2 = new Car("white", "auto", 4);
System.out.println("c1 : " + c1.color + ", " + c1.gearType + ", " + c1.door);
System.out.println("c2 : " + c2.color + ", " + c2.gearType + ", " + c2.door);
// c1 : white, auto, 4
// c2 : white, auto, 4
}
}
'Java의 정석' 카테고리의 다른 글
객체 지향 개념 - 15 this() (0) | 2022.03.21 |
---|---|
객체 지향 개념 - 14 this() (0) | 2022.03.18 |
객체 지향 개념 - 12 기본 생성자(default constructor) (0) | 2022.03.16 |
객체 지향 개념 - 11 생성자(constructor) (0) | 2022.03.15 |
객체 지향 개념 - 10 오버로딩(overloading) (0) | 2022.03.14 |