[TIL][Java][2023-12-22] 생성자 (constructor)

2023. 12. 22. 17:57TIL/Java

생성자 (Constructor)

 

생성자는 객체가 생성될 때 호출되며 객체를 초기화하는 역할을 수행한다.

 

 

 

 

 

생성자 선언과 호출

 

  • 생성자는 반환 타입이 없고 이름은 클래스의 이름과 동일하다.
  • new 연산자에 의해 객체가 생성되면서 생성자가 호출된다.
public Car() {} // 선언

...

Car car = new Car(); // 호출

 

 

 

 

 

 

기본 생성자

 

기본 생성자는 선언할 때 괄호 안에 아무것도 넣지 않는 생성자를 의미한다.

  • 모든 클래스는 반드시 생성자가 하나 이상 존재한다.
  • 만약 클래스에 생성자를 하나도 선언하지 않았다면 컴파일러는 기본 생성자를 자동으로 추가시켜 준다.
  • 반대로 단 하나라도 생성자가 선언되어 있다면 컴파일러는 기본 생성자를 추가하지 않는다.
public class Car {
		public Car(String model) {} // 생성자 선언
		// 생성자가 한개 이상 선언되었기 때문에 기본 생성자를 추가하지 않음.
}

 

public class Car {
		public Car() {} // 컴파일러가 추가시켜줌
}

class Car {
		Car() {} // 컴파일러가 추가시켜줌
}
  • 컴파일러에 의해 생성되는 기본 생성자는 해당 클래스의 접근 제어자를 따른다.

 

 

 

 

 

필드 초기화와 생성자 오버로딩

 

필드 초기화

  • 생성자는 객체를 초기화하는 역할을 수행한다.
    • 객체를 만들 때 인스턴스마다 다른 값을 가져야 한다면 생성자를 통해서 필드를 초기화할 수 있다.
    • 반대로 인스턴스마다 동일한 데이터를 가지는 필드는 초기값을 대입하는 것이 좋다.

 

생성자 오버로딩

  • 생성자를 통해 필드를 초기화 할 때 오버로딩을 적용할 수 있다.
  • 주의할 점은 오버로딩을 할 때 개수, 타입, 순서가 동일한데 매개변수명만 다르게 하는 경우는 오버로딩 규칙에 위배되기 때문에 오류가 발생한다.