-
- 디폴트 생성자
객체가 생성될 때(변수에 할당 말고 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 의미 } }
'컴퓨터 > Java' 카테고리의 다른 글
데이터 은닉 (0) 2019.09.03 패키지와 static (0) 2019.09.03 객체와 메모리 (0) 2019.09.02 클래스 01: 클래스, 클래스 객체 생성, constructor, instance fields, methods (0) 2019.09.02 [effective Java] 02. 객체 생성과 파괴 (0) 2019.09.02