해결된 질문
작성
·
349
답변 1
0
안녕하세요?
말씀하신 것처럼 이 예제에서는 굳이 생성자를 만들지 않고 인스턴스 변수를 생성함과 동시에 초기화를 하셔도 무방합니다. 어차피 SpeedCam 생성자 내에서 "과속 단속 카메라" 라는 고정 값으로 설정하기 때문이죠. 이렇듯 어떤 클래스로부터 객체를 만들 때 모든 객체에 기본적으로 사용되는 값이 있는 경우 변수 생성과 동시에 초기화를 하면 코드를 읽기도 좋아지고 값 확인도 수월해집니다.
하지만 만약 SpeedCam 클래스 객체를 만들 때 서로 다른 종류의 과속 단속 카메라 정보를 사용한다면, 가령 "일반 과속 단속 카메라", "광각 과속 단속 카메라", "번호판 확대 과속 단속 카메라" 등등 각각의 이름으로 객체를 만들게 되는 경우에는 생성자를 만들고 생성자의 매개변수로 SpeedCam(String name) 과 같이 이름을 받도록 하여 생성자 내에서 초기화를 해야 합니다.
정리하면 이렇습니다.
1) 모든 객체에 기본적으로 사용되는 값을 사용하는 경우 변수 생성과 동시에 값 설정
2) 서로 다른 값이 사용될 수 있는 경우 생성자에서 전달 받아서 값 설정
예제는 이렇습니다.
1) 은 다음과 같이 생성자 없이 x 변수에 기본값인 0 을 넣는 경우입니다.
public class MyClass {
public int x = 0;
...
}
2) 는 객체를 생성할 때 전달값을 받아서 생성자에서 넣는 경우이며, 어떤 값이 될지는 모르는 경우입니다.
public class MyClass {
public int x;
public MyClass(int x) {
this.x = x;
}
...
}
생성자에서는 인스턴스 변수의 값 설정 외에도 다른 추가적인 작업을 할 수도 있습니다. 객체가 생성됨과 동시에 반드시 이뤄져야 하는 동작이 있다면 생성자에서 처리를 하면 별도의 메소드를 호출할 필요 없이 객체 생성만으로도 원하는 동작을 수행할 수 있게 됩니다.
감사합니다 😊
감사합니다 상세히 예를들어 설명해주시니 이해가 되요!