본문 바로가기
Study/Java

[Java] 생성자와 소멸자 그리고 this 키워드

by JYHAN 2020. 7. 2.

디폴트 생성자

객체가 생성될 때 가장 먼저 호출되는 생성자로, 만약 개발자가 명시하지 않아도 컴파일 시점에 자동 생성된다

Object obj = new Object();

// 다음과 같이 디폴트 생성자가 없는 경우 
public class Object(){

}

// 컴파일 시점에 컴파일러가 아래와 같이 생성자를 자동으로 생성한다
public Object(){

}

 

사용자 정의 생성자

디폴트 생성자 외에 특정 목적에 의해서 개발자가 만든 생성자로, 매개변수에 차이가 있다

사용자 정의 생성자를 하나라도 만들면 디폴트생성자는 사라진다 - 중요!!!!!!

Object obj = new Object("John", 10);

public Object(string name, int age){
	str = name;
    i = age;
}

 

소멸자

객체가 GC에 의해서 메모리에서 제거될 때 finalize() 메서드가 호출된다

Object obj;

obj = new Object();
obj = new Object(); // 기존의 레퍼런스를 끊고 새롭게 연결

// 가급적 GC가 빨리 작동하도록 요청
// java에서는 개발자가 메모리를 직접 관리하지 않기 때문에 사용하는 경우는 드물다
System.gc();

// 아래 메서드를 호출한다
@Override
protected void finalize() throws THrowable{
	super.finalize();
}

새로운 객체 생성시 연결관계

this

현재 객체를 가리킬 때 this를 사용한다

Dog dog1 = new Dog("dogg", 1);
dog1.getInfo();

public class Dog{
	public string name;
    public int age;
    
    public Dog(string n, int a){
    	this.name = n;
        this.age = a;
	}
    
    public void getInfo(){
     System.out.println(name +" "+ age);
    }
}

--- result ---
dogg 1

댓글