본문 바로가기

Java

java - Constructors

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