반응형
생성자
- 함수의 리턴 타입이 없음
- 클래스의 이름과 같은 이름으로 함수를 정의
- 메모리에 객체를 생성하여 영역을 확보
- 바로 인스턴스 변수에 데이터 셋팅
- 즉, 설정된 변수에 초기 값을 부여하는 것
this
- this는 객체 자기 자신을 의미, 자신의 메모리를 가르킴
- 전역 변수와 지역 변수를 구분짓기 위한 참조 변수
- 생성자의 파라미터 이름이 전역 변수와 이름이 같을 때 구분하기 위해 사용
- this.변수명으로 정의
- 클래스 변수, static 키워드에서는 this를 사용 할 수 없음
public class ThisTest {
String message = "Hi"; // 전역 변수
void setMessage(String message) {
this.message = message; // 지역 변수, this로 지역 변수 구분
}
void print() {
System.out.println("message : " + message);
}
public static void main(String[] args) {
ThisTest tt1 = new ThisTest();
tt1.print(); // message : Hi!
ThisTest tt2 = new ThisTest();
tt2.setMessage("HelloWorld!");
tt2.print(); // message : HelloWorld!
}
}
this()
- this는 참조 변수, this()는 생성자
- 오버로딩 된 다른 생성자를 호출 할 때 사용
- 호출을 위해 사용하는 this() 생성자는 항상 첫 문장에 정의, 그렇지 않으면 에러 출력
public class ClassTest {
String message;
// 생성자
public ClassTest() {
this("Hello! "); // 다른 생성자 호출
}
// 생성자 오버로딩
public ClassTest(String message) {
this.message = message;
}
public void print() {
System.out.println(message);
}
public static void main(String[] args) {
ClassTest ct1 = new ClassTest();
ct1.print(); // message : Hello!
ClassTest ct2 = new ClassTest("HelloWorld!");
ct2.print(); // message : HelloWorld!
}
}
- 오버로딩된 같은 이름의 생성자 호출시 항상 첫 문장에 정의하여야 함
생성자로 인스턴스 변수 값 설정하기
- 기본 값을 설정 할 때 사용
- 인스턴스 변수 할당시 값을 필수로 입력
- 설정한 값을 입력하지 않으면 에러 출력
- 사용자의 값 누락을 방지할 수 있음
public class ClassTest {
String message;
// 생성자
public ClassTest(String message) {
this.message = message;
}
void print() {
System.out.println("message : " + message);
}
public static void main(String[] args) {
ClassTest ct1 = new ClassTest();
ct1.print(); // Error: The constructor ClassTest() is undefined
ClassTest ct2 = new ClassTest("HelloWorld!");
ct2.print(); // message : HelloWorld!
}
}
반응형