먹었으면 뇌를 쓰자

자바 기본 생성자, 인수 생성자는 같이 입력해야 한다 왜냐면... 본문

Framework/JPA

자바 기본 생성자, 인수 생성자는 같이 입력해야 한다 왜냐면...

뇌이비 2022. 11. 28. 21:08

 

 

상황 : 다음과 같이 인수 생성자(arguments constructor)를 통해 입력을 받기로 한 객체들이 있다. 

 

 

 

 

 

코드가 정상으로 작동하기 위해서는

인수 생성자뿐만이 아닌, "기본 생성자"를 함께 명시해야 한다.

변수도 받지 않고, 텅 빈 강정같이 속이 빈 생성자다.

 

 

 

 

 

 

그 이유는 무엇일까?

 

 

원래 기본 생성자는 클래스에 자동으로 배정된다. 

Person.class와 Address.class 모두 눈에 보이지는 않지만

기본 생성자가 배정되어 있는 상태이다. 

 

기본 생성자가 배정된 상태이므로

두 클래스를 복제한 new Person()과 new Address()를 만들 수 있는 것이다.

 

그런데 내가 인수 생성자를 만들었다. 

이 행동으로 인해 기본 생성자가 사라져버린다. 

 

웃기네...

 

그래서 인수 생성자를 만들 때는 

사라져버린 기본 생성자를 다시 명시해줘야 한다. 

 

 

 

 

 

 

 

 

 

 

참고한 글: 

https://velog.io/@jakeseo_me/%EA%B0%84%EB%8B%A8%EC%A0%95%EB%A6%AC-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EA%B8%B0%EB%B3%B8-%EC%83%9D%EC%84%B1%EC%9E%90%EC%9D%98-%EC%9D%98%EB%AF%B8-feat.-Java-Reflection-Jackson-JPA

 

Comments