inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

기본 생성자

기본생성자 강의 질문

531

catela J

작성한 질문수 20

0


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

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

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

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

 

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

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

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

java 객체지향

답변 2

2

나무늘보

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

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

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

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

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

 

감사합니다.

0

인프런 AI 인턴

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

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

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

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

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

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

1

catela J

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

질문있습니다

0

30

1

1번 문제 질문입니다.

0

35

1

음악플레이어 문제 중 코드질문

0

28

1

9장 상속 문제와 풀이 질문

0

39

1

강의 자료에 사소한 오타가 있습니다.

0

50

2

매서드 참조값 반환??

0

67

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

72

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

77

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

67

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

98

1

Method1에서 Student 객체

0

74

1

3강 18. null 질문

0

69

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

77

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

90

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

136

1

기본편 객체지향 프로그래밍에 대한 정의

0

88

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

153

2