1. 생성자를 왜 쓰는지?
객체가 생성될 때 초기 상태를 설정하기 위해 사용
필드 초기화를 자동화 하고, 객체 사용 전 필요한 값들을 설정할 수 있음.
---
2. 자바에서 생성자 오버로딩이 필요한 이유?
객체를 다양한 방식으로 초기화할 수 있도록 하기 위해
---
3. 생성자를 사용하지 않고 필드를 일일이 초기화하는 방식과 비교했을 때, 생성자의 장점?
필드를 직접 초기화하면 중복, 실수 가능성이 큼
생성자는 초기화 로직을 하나의 블록으로 모아 가독성과 유지보수성이 좋아짐
---
4. this() 키워드는 언제, 왜 사용하는 건가요? 생성자에서만 사용 가능한가요?
this는 같은 클래스의 다른 생성자를 호출할 때 사용하며 생성자 블록 안에서만 사용 가능
---
5. 생성자 안에서 this() 호출이 항상 첫 줄에 있어야 하는 이유는 무엇인가요?
어떤 생성자가 먼저 실행될지 불명확해 컴파일 오류가 발생할 수 있기 때문에
---
6. 기본 생성자는 언제 자동으로 만들어질까
클래스에 생성자가 없을 경우
---
7. 생성자에서 필드를 초기화하는 것과, 초기화 블록({})에서 초기화하는 것의 차이점은 무엇인가요?
생성자는 객체 생성 시 호출되는 메서드고, 초기화 블록은 모든 생성자보다 먼저 실행되어 공통 초기화 코드를 담을 수 있음.
---
8. 생성자를 오버로딩할 때 주의해야 할 점은 무엇인가요?
매개변수의 타입, 개수, 순서가 달라야 한다. 그렇지 않으면 컴파일러가 어떤 생성자를 호출해야 하는지 혼동
---
9. 아래 코드에서 발생하는 문제를 설명해보세요.
Book(String title, String author) {
System.out.println("생성자 호출");
this(title, author, 100); // 이 줄이 두 번째 줄에 위치
}
this는 생성자 블록의 첫줄에 사용하지 않으면 컴파일 오류가 발생하기 때문
---
10. 실무에서 생성자보다 정적 팩토리 메서드(static factory method)를 사용할 수 있는 상황은 언제인가요?
객체 생성시 이름을 부여하고 싶을 때, 캐싱, 불변 객체, 생성자 숨기기 등을 하고 싶은 경우
복습을 자주 하자.
···