ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 생성자, 소멸자
    컴퓨터/Java 2019. 9. 3. 08:20

    - 디폴트 생성자

    객체가 생성될 때(변수에 할당 말고 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 의미
    	}
    	
    }
    

    댓글

Designed by Tistory.