[TIL][Java][2023-12-22] 생성자 (constructor)
2023. 12. 22. 17:57ㆍTIL/Java
생성자 (Constructor)
생성자는 객체가 생성될 때 호출되며 객체를 초기화하는 역할을 수행한다.
생성자 선언과 호출
- 생성자는 반환 타입이 없고 이름은 클래스의 이름과 동일하다.
- new 연산자에 의해 객체가 생성되면서 생성자가 호출된다.
public Car() {} // 선언
...
Car car = new Car(); // 호출
기본 생성자
기본 생성자는 선언할 때 괄호 안에 아무것도 넣지 않는 생성자를 의미한다.
- 모든 클래스는 반드시 생성자가 하나 이상 존재한다.
- 만약 클래스에 생성자를 하나도 선언하지 않았다면 컴파일러는 기본 생성자를 자동으로 추가시켜 준다.
- 반대로 단 하나라도 생성자가 선언되어 있다면 컴파일러는 기본 생성자를 추가하지 않는다.
public class Car {
public Car(String model) {} // 생성자 선언
// 생성자가 한개 이상 선언되었기 때문에 기본 생성자를 추가하지 않음.
}
public class Car {
public Car() {} // 컴파일러가 추가시켜줌
}
class Car {
Car() {} // 컴파일러가 추가시켜줌
}
- 컴파일러에 의해 생성되는 기본 생성자는 해당 클래스의 접근 제어자를 따른다.
필드 초기화와 생성자 오버로딩
필드 초기화
- 생성자는 객체를 초기화하는 역할을 수행한다.
- 객체를 만들 때 인스턴스마다 다른 값을 가져야 한다면 생성자를 통해서 필드를 초기화할 수 있다.
- 반대로 인스턴스마다 동일한 데이터를 가지는 필드는 초기값을 대입하는 것이 좋다.
생성자 오버로딩
- 생성자를 통해 필드를 초기화 할 때 오버로딩을 적용할 수 있다.
- 주의할 점은 오버로딩을 할 때 개수, 타입, 순서가 동일한데 매개변수명만 다르게 하는 경우는 오버로딩 규칙에 위배되기 때문에 오류가 발생한다.
'TIL > Java' 카테고리의 다른 글
[TIL][Java][2023-12-28] 접근제어자 (0) | 2023.12.28 |
---|---|
[TIL][Java][2023-12-27] this 와 this() (0) | 2023.12.27 |
[TIL][Java][2023-12-21] 인스턴스 멤버와 클래스 멤버 (2) | 2023.12.21 |
[TIL][Java][2023-12-20] 기본형 매개변수, 참조형 매개변수 (2) | 2023.12.20 |
[TIL][Java][2023-12-19] 오버로딩 (0) | 2023.12.19 |