inflearn logo
강의

Course

Instructor

Do it! Introduction to Java Programming with Eun Jong

Classes and Objects 1 (4)

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

433

bong56182976571

1 asked

1

public Student() {

korea = new Subject();

math = new Subject();

}

이처럼 

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

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

korea = new Subject();

math = new Subject();\

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

 

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

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

java

Answer 1

3

seung lee

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

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

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

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

 

0

bong56182976571

감사합니다!

이클립스 활성화가 안되는부분이있어요ㅜㅜ

0

429

1

책에 자료실

0

495

1

StudentID

0

553

1

인터페이스와 가상 메서드

0

354

1

11분쯤 price, int price 질문

0

350

1

For문 (중첩된 반복문) 구구단 문의 드립니다.

0

782

1

반복문 별 출력 연습문제

0

390

1

비트 연산자 질문입니다.

1

367

1

Scheduler scheduler = null 굳이 하는 이유가 있나요

1

333

0

Class간의 연결

1

292

1

선생님 스킬

0

392

1

초기화 에러!!!

0

282

1

선생님 영상에서 목소리가 좀 작은 것 같습니다 ㅠㅠ

2

300

0

출력

2

230

0

Main 함수 저번 강의 거가 나와요

0

312

1

결과값오류

1

222

0

printIn 함수 질문

0

449

1

24분 57초에 질문 있습니다!!

0

359

1

1분36초쯤에 말씀하시는 자바닥??그거 보라고 하셨는데 자바닥이 뭐죠..?

0

246

1

메서드와 생성자

0

393

2

참조형 데이터 타입은 클래스 이름과 같아야 하나요?

0

282

1

반환값은 정수 밖에 안되나요?

0

270

1

9분33초 설명!!부탁 드립니다!

0

296

1

48분쯤에 {"B","C","D""} 를 왜 {'B','C','D'}로 바꿨죠?

0

294

1