작성
·
294
0
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 변수와 같이 한번만 생성해도 되는 경우는 변수를 선언함과 동시에 생성하기도 합니다.
두번째 코드를 사용했을 때 init() 과 같은 메서드를 만들고 그 메서드에서 인스턴스 변수들을 초기화해야된다는 것이고 대부분은 첫번째 코드처럼 코딩을 한다는 말씀이신가요?