• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

참조자료형 변수 강의- class 자료형 선언 질문

23.04.14 15:13 작성 조회수 252

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() 과 같은 메서드를 만들고 그 메서드에서 인스턴스 변수들을 초기화해야된다는 것이고 대부분은 첫번째 코드처럼 코딩을 한다는 말씀이신가요?