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

24이마트님의 프로필 이미지
24이마트

작성한 질문수

Do it! 자바 프로그래밍 입문 with 은종쌤

클래스와 객체1 (4)

생성자 안에 왜 또 생성자를 만드는지 궁금합니다.

작성

·

322

1

public Student() {

korea = new Subject();

math = new Subject();

}

이처럼 

Student 디폴트 생성자 안에 생성자를 또 만드셨는데

의문이 들어 직접 코드를 짜서 디폴트 안이 아닌 멤버변수 선언 할 때 처럼 디폴트 생성자 밖에  

korea = new Subject();

math = new Subject();\

이 두 생성자를 만들어도 문제 없이 프로그램이 작동하는 것을 확인 하였습니다.

 

그렇다면 강의에서 디폴트 생성자 안에 다른 생성자를 만드신 것은 어떤 이유에서인지 궁금합니다. 

아니면 이것도 가독성을 위한 개발자들 간의 약속인가요??

답변 1

3

저도 같이 배우는 입장으로서 제 생각을 적어보겠습니다

멤버변수(인스턴스변수)들은 객체가 생성될 때 같이 생성되는 변수들이므로 생성자 안에서 new 해주지 않고, 24이마트님 말씀처럼 필드에서 new로 초기화를 해주셔도 정상동작 할거라고 생각합니다.

아래 사진처럼 과목이 생성될 때 과목 이름도 같이 받는 걸로 예를 들어보겠습니다.

하지만 만약 기본생성자로 생성되는 학생객체들에게는 math 과목의 이름을 수학1 이라고 정해주고 싶고, studentID를 매개변수로 받는 생성자에 의해 생성되는 학생객체들에게는 math과목의 이름을 수학2라고 정해주고 싶다고 칩시다.(ID를 가지고 있는 학생들이 고학년이라고 가정) 그렇다면 아래 코드처럼 짜줘야하지 않을까요? Subject변수 선언과 동시에 new를 해버리면서 과목이름을 넣어버리면 모든 Student객체들은 같은 Subject이름을 가지게 되는거니까요

 

24이마트님의 프로필 이미지
24이마트
질문자

감사합니다!

24이마트님의 프로필 이미지
24이마트

작성한 질문수

질문하기