컴퓨터/Java
생성자, 소멸자
수제녹차
2019. 9. 3. 08:20
728x90
반응형
- 디폴트 생성자
객체가 생성될 때(변수에 할당 말고 new로 생성시) 가장 먼저 호출되는 생성자로, 만약 개발자가 명시하지 않아도 컴파일 시점에 자동 생성된다.
package lec11Pjt001;
public class ChildClass {
public String name;
public String gender;
public int age;
// 디폴트 생성자
public ChildClass() {
System.out.println(" --- ChildClass constructor --- ");
}
// 디폴트 생성자가 없는 경우 실행되는 생성자
public ObjectEx() {
}
}
- 사용자 정의 생성자
디폴트 생성자 외에 특정 목적에 의해서 개발자가 만든 생성자, 매개변수에 차이가 있다.
// 1. ObjectEx obj2 = new ObjectEx(10);로 호출시
// 사용자 정의 생성자 예시
public ObjectEx(int i) {
System.out.println("UserDefined constructor");
num = i;
}
//int arr[] = {10,20,30};
// 2. ObjectEx obj2 = new ObjectEx("Java", arr);
// 사용자 정의 생성자 예시
public ObjectEx(String s, int i[]) {
System.out.println("UserDefined constructor");
}
- 소멸자
객체가 GC에 의해서 메모리에서 제거될 때 finalize() 메서드가 호출된다.
모든 클래스에 명시하지 않아도 된다.
System.gc(); -> System에 garbage collector 행위 지시, 바로 작동하는 것이 아니라 가급적 빨리 작동하도록 요청하는 것, java는 기본적으로 메모리를 개발자가 직접 관리하지 않으므로 일반적으로 System.gc()를 사용하는 경우는 드물다.
@Override
protected void finalize() throws Throwable {
System.out.println(" -- finalize() method --")
super.finalize();
}
- this 키워드
지금 내가 작업을 하고 있는 해당 객체 this
class로부터 만들어지는 객체
package lec11Pjt001;
public class ObjectClass {
public int x;
public int y;
public ObjectClass(String s, int[] iArr) {
System.out.println("-- ObjectClass() --");
System.out.println("s : " + s);
System.out.println("iArr : " + iArr);
}
public ObjectClass(int x, int y) {
// 전역변수에 인자로 넣어준 값을 할당한다
this.x = x;
this.y = y;
}
public void getInfo() {
System.out.println("x : " + x); // this.x 의미
System.out.println("y : " + y); // this.y 의미
}
}
반응형