constructor
< define >
자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화 할 수 있는 생성자라는 메소드를 제공합니다.
생성자의 이름은 해당 클래스의 이름과 같아야 합니다.
< characterristic >
1. 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않습니다.
2. 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있습니다.
3. 객체를 초기화하는 방법이 여러 개 존재할 경우에는 하나의 클래스가 여러 개의 생성자를 가질 수 있습니다.
즉, 생성자도 하나의 메소드이므로, 메소드 오버로딩이 가능하다는 의미입니다.
class Car {
private String modelName;
private int modelYear;
private String color;
private int maxSpeed;
private int currentSpeed;
//①
Car(String modelName, int modelYear, String color, int maxSpeed) {
this.modelName = modelName;
this.modelYear = modelYear;
this.color = color;
this.maxSpeed = maxSpeed;
this.currentSpeed = 0;
}
public String getModel() {
return this.modelYear + "년식 " + this.modelName + " " + this.color;
}
}
public class Method04 {
public static void main(String[] args) {
//② 기본 생성자의 호출
//Car myCar = new Car();
//③ 생성자의 호출
Car myCar = new Car("lucid", 2022, "black", 300);
System.out.println(myCar.getModel()); // 생성자에 의해 초기화되었는지를 확인함.
}
}
위의 예제는 ①번 라인에서 4개의 매개변수를 갖는 생성자를 정의하고 있습니다.
따라서 자바 컴파일러는 Car 클래스에 별도의 기본 생성자를 추가하지 않을 것입니다.
하지만 ②번 라인에서는 기본 생성자를 호출하여 인스턴스를 생성하려고 하고 있습니다.
따라서 자바 컴파일러는 오류를 발생시킬 것이며, ③번 라인과 같이 4개의 매개변수를 전달해야만 인스턴스가 생성될 것입니다.
'Java' 카테고리의 다른 글
java - overriding (0) | 2023.03.13 |
---|---|
java - overloading (0) | 2023.03.13 |
java - Parameters (0) | 2023.03.13 |
java - Methods (1) | 2023.03.13 |
Java - Recursive Funtion (0) | 2023.03.03 |