참조자료형 변수 강의- class 자료형 선언 질문
358
작성한 질문수 6
public class Student {
int studentID;
String studentName;
Subject korean;
Subject math;
public Student(int studentID, String studentName) {
this.studentID=studentID;
this.studentName=studentName;
korean=new Subject();
math=new Subject();
}
}위의 코드를 아래의 코드로 바꾸면 어떻게 다른거며 어떤 문제가 발생하나요?
결과값은 똑같이 나오더라구요
public class Student {
int studentID;
String studentName;
Subject korean=new Subject();
Subject math=new Subject();
public Student(int studentID, String studentName) {
this.studentID=studentID;
this.studentName=studentName;
}
}
답변 2
0
아… 제가 좀 혼란스럽게 썼네요., 첫 번째 코드로 사용할 때 생성자가 여러개인 경우 반복적인 초기화를 init() 과 같은 메서드를 정의하고 각 생성자에서 호출한다는 것입니다. 인스턴스 변수는 기본적으로 생성자에서 초기화 하는 것이 맞습니다. 그래서 첫번째 코드 방식으로 사용하시기를 권장합니다.
0
두 코드의 차이는 첫번째의 경우는 생성자가 호출될때 인스턴스 변수 객체가 생성되는 것이고, 두번째 코드는 Student가 생성될 때 인스턴스 변수가 생성되는 것입니다. 생성자가 여러개인 경우에는 각 생성자에서 인스턴스 변수를 생성해야 하므로 init() 과 같은 메서드를 만들고 그 메서드에서 인스턴스 변수들을 초기화 해주면 됩니다. 대부분의 경우는 생성자에서 인스턴스 변수를 초기화 하는 것이 일반적입니다. static 변수와 같이 한번만 생성해도 되는 경우는 변수를 선언함과 동시에 생성하기도 합니다.
0
두번째 코드를 사용했을 때 init() 과 같은 메서드를 만들고 그 메서드에서 인스턴스 변수들을 초기화해야된다는 것이고 대부분은 첫번째 코드처럼 코딩을 한다는 말씀이신가요?
질문드려요
0
444
4
구현과 오버라이딩
0
243
1
문제답안
1
240
2
교재 속 나 혼자 코딩 문제 답안관련 질문
1
325
1
회차 강의pdf파일 보는 방법이 없나요?
0
570
1
singleton pattern
0
383
2
return 사용되는 위치가 궁금합니다
0
471
2
오버라이드 할때 @override 안적어도 되나요?
0
551
1
pakage 내에서 main함수는 하나만 존재해야하나요?
0
729
1
왜 이렇게 하는지 설명은 없나요?
0
415
1
p.88 연습문제1 질문입니다.
0
283
1
강의노트 어디서 볼수 있을까요?
0
454
4
강의노트 어디서 볼 수 있을까요?
0
680
2
예제코드 다운로드 오류
0
541
1
복습문제는 어디서 확인할수있을까요?
0
411
1
static 메서드 main문 안에 선언 시 오류 발생 이유가 궁금합니다.
0
387
1
강의노트는 어디서 확인할 수 있을까요
0
490
1
실행을 하면 결과가 깨져서 나와요
0
376
3
복습 문제 들은 어디서 받아 볼 수 있나요
0
391
2
비트 연산자 질문
0
299
1
upgradeLevel에 인수를 넣기 위해 새로 AdvancedLevel 과 같은 instance를 생성하는게 어색하게 느껴집니다.
0
339
1
p.243
0
240
2
p.237
0
260
2
p.196
0
278
1





