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

손기민님의 프로필 이미지
손기민

작성한 질문수

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

문제와 풀이

page 중복도 지울 수 있지 않나요?

해결된 질문

작성

·

80

0

image.png

실습 코드에 있는 기본 생성자인

Book() {
    this("", "", 0);
}

에서

Book() {
    this("", "");
}

 

으로 바꾸면 중복으로 되어있는 0도 지울 수 있나요?

물론 함수를 두 번 호출 하겠지만 문제에 있는 중복이 없는 조건을 맞추려면 이게 가능한지 궁금합니다.

답변 2

0

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

말씀히신 것처럼 this("", ""); 로 호출하여도 문제 없습니다. 만약 이와 같이 될 경우

생성자는 아래와 같은 순서로 호출됩니다.

Book() -> Book(String, string) -> Book(String, String, int)

 이는 자바 문법상 아무 문제가 없는 코드 입니다.

감사합니다.

0

이렇게 바꾸면 똑같이 증복 아닌가요?

book() 에 아무것도 없는 것에서,

2개의 인자 값이 넘어가는것을 호출(2번째 생성자)한다음 여기에 값을 "",""을 넣고,

또 다음에 3개의 인자의 값을 받아, 넘기는 함수를 호출(3번째 생성자) 하는데,

여기에서 "" <-아무것도 없는 빈 공백 값이 증복이 된다고 생각하는데, 손기민님의 생각은 어떠신지요?

손기민님의 프로필 이미지
손기민
질문자

book1, book2, book3때문에 생성자가 최소 세 개는 있어야되는 상황이라서 여기서 중복을 더 제거할 수 없다고 생각합니다

 

또한 영상에서 나왔듯이 ""라는 빈 공백 값이 없으면 null이 뜨기 때문에 필요한 것 같습니다

죄송합니다. 저가 좀 잘못설명한것 같습니다.

Book1의 내용을 this(“”,””) 으로 바꾸면 book2 생성자를 호출하고, 그 안의 내용에 또 빈 공백(“”)이 들어가고, book3의 생성자를 호출해서 증복이(내용도 증복,호출도 증복)되는것 이라고 말했던 것 입니다.

book1의 내용을 아무것도 안쓰고 할려면, 저의 생각에는 생성자 밖에 있는 값들(title, page) 에 값을 넣으면 될것 같습니다. String title = “”;

혹시 저가 님의 의도를 잘못 이해하고 말해 주시면 감사하겠습니다.

추가1

그리고 저도 공부하는 사람이라서 틀릴수도 있다는것을 알아두었으면 합니다..

손기민님의 프로필 이미지
손기민

작성한 질문수

질문하기