공부/Java
[즐거운자바] 객체지향(4) - 생성자
다음에바꿔야지
2023. 10. 13. 01:00
<사용 목적>
- 객체, 멤버 변수 초기화: 객체 자체와 객체의 멤버 변수를 초기화하는 데 사용된다. 객체의 내부 상태가 일관되고 유효한 상태로 시작된다. 이로 인해 더 구조화된 방식으로 처리할 수 있고, 객체의 안전성이 보장되며, 객체를 생성하는 표준 방법을 제공한다.
- 오버로딩: 클래스에 여러 생성자를 정의하여 다양한 매개변수 조합을 지원할 수 있다.
- 객체 복제: 다른 객체의 속성을 복사하여 새 객체를 만들 때 생성자가 사용될 수 있다.
- 상속 및 하위 클래스: 부모 클래스의 생성자를 호출하는 데 사용된다. 하위 클래스가 부모 클래스를 확장할 때 부모 클래스의 생성자를 호출하여 상속된 멤버 변수를 초기화할 수 있습니다.
- 코드 가독성: 생성자를 사용하면 객체 생성 및 초기화 과정이 명확하게 드러나므로 코드의 가독성이 향상된다.
어떤 값을 가지고 인스턴스가 만들어지게 하고 싶다면 생성자를 사용한다.
<특징>
- 클래스 작성시 생성자를 하나도 만들지 않았다면 자동으로 기본 생성자가 생성된다.
- 기본 생성자는 매개변수를 하나도 받지 않는 생성자를 말한다.
- 생성자를 하나라도 만들면, 기본 생성자가 만들어지지 않는다.
- 메소드와 비슷한 특징을 가지고 있다. return 타입이 없다.
- 클래스 이름과 같아야 한다.
<불변 객체>
: 생성될 때 내부 상태(데이터)를 수정할 수 없는 객체(PDF라고 생각한다.)
규칙은 다음과 같다.
- setter 메서드를 제공하지 않아야 한다. 즉, 값을 변경할 수 없어야 한다.
- 필드는 final로 선언되어야 한다.
<생성자 오버로딩>
생성자는 매개변수의 갯수가 다르거나, 타입이 다르면 여러 개를 가질 수 있다.
자신의 생성자를 호출할 때는 this()를 사용한다.
부모의 생성자를 호출할 때는 super()를 사용한다. -> 무조건 첫 번째 줄에만 올 수 있다.