인프런 커뮤니티 질문&답변

catela J님의 프로필 이미지
catela J

작성한 질문수

김영한의 실전 자바 - 기본편

기본 생성자

기본생성자 강의 질문

작성

·

443

0


=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
만약 자바에서 '기본 생성자'를 만들어주지 않는다면 생성자 기능이 필요하지 않은 경우에도 모든 클래스에 개발자가 직접 기본 생성자를 정의해야 한다. 생성자 기능을 사용하지 않는 경우도 많기 때문에 이런 '편의 기능'을 제공한다.

위 내용에 관한 질문입니다.

생성자가 필요하지 않는 경우에도 생성자를 정의해야 된다는게 무슨말인지 이해가 안가서요

 

생성자 기능을 사용하지 않는 경우 생성자가 필요없다는 뜻 아닌가요?

근데 왜 개발자가 직접 기본 생성자를 정의해줘야 하는거죠?

문맥이 이해가 가질 않아서요

답변 2

2

안녕하세요. catela J님, 공식 서포터즈 코즈위버입니다.

자바 문법에서 새로운 객체를 생성할 때는 '생성자'를 호출하며, 소거하기 전에는 '소멸자'를 호출한다고 규정하고 있습니다.

생성자는 객체를 생성할 때 무조건 호출되며 생성자가 실행뒨 뒤에는 객체가 정상적으로 생성되었음을 보장해야 합니다. 정상 상태라는 것은 멤버 변수가 초기화 되어 사용가능한 상태이며, 어떤 리소스를 사용한다면 이 리소스를 사용할 수 있는 준비를 마쳐야 하며, 의존하고 있는 객체가 있다면 생성자를 통해 의존관계 설정을 완료해야 한다는 의미입니다.

개발자가 위의 세가지 항목등을 직접 처리하는 생성자를 작성하는게 원칙이나, 대체로 아무것도 하지 않아도 객체를 생성하는데는 문제가 없습니다. (필드는 객체를 만들때 JVM이 알아서 초기화를 진행해주며, 리소스나 의존관계가 없는 경우, 혹은 의존관계를 생성자에서 직접 해결하지 않고, 외부에서 주입받아 해결하는 경우가 많습니다. 그래서 개발자가 생성자에 아무것도 작성하지 않아도 되는 경우가 많습니다)

그럼에도 자바 문법상 생성자가 반드시 존재해야 하기에, 개발자가 생성자를 명시하지 않았다면, 컴파일 단계에서 컴팡일러가 기본 생성자를 강제로 추가하도록 편의를 제공하고 있습니다.

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

기본 생성자에 대해 궁금하신 점을 질문해주셨군요. 기본 생성자는 클래스에 다른 생성자가 명시적으로 정의되지 않았을 때, 자바 컴파일러가 자동으로 생성해주는 생성자입니다. 만약 다른 생성자들이 정의되어 있다면, 자동으로 기본 생성자가 생성되지 않으며, 이 경우에는 명시적으로 기본 생성자를 정의해주어야 합니다. 이는 객체를 생성할 때 매개변수 없이 생성할 수 있게 하기 위함입니다.

이와 관련해서 다른 학습자분들의 비슷한 질문과 강사님의 답변이 포함된 링크를 찾았습니다. 해당 내용이 도움이 될 것 같으니 참조하시면 좋을 것 같습니다.

강의 제목: 자바 ORM 표준 JPA 프로그래밍 - 기본편
Entity를 사용하는 클래스의 생성자 관련 질문

강의 제목: 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Entity & 기본생성자와의 관계

이 링크들을 참고하시면 자바의 기본 생성자에 대한 이해를 높이는 데 도움이 될 것입니다.

catela J님의 프로필 이미지
catela J
질문자

질문 내용을 이해하지못한 자동생성 답변입니다.

catela J님의 프로필 이미지
catela J

작성한 질문수

질문하기