자바/자바 개념

생성자와 소멸자, this와 this()

모자 2021. 8. 6. 17:42
728x90
반응형

생성자란?

생성자는 객체가 생성될 때 객체의 초기화를 위해 실행되는 메서드이다. 필드 초기화, 필요한 메모리 확보, 파일 열기, 네트워크 연결 등 객체가 활동하기 전에 필요한 초기 준비를 하는데 이용된다.

생성자는 객체가 생성되는 순간에 자동으로 호출되는 메서드로서, 객체에 필요한 초기화를 실행하는 코드를 담아야 한다. 

 

생성자의 특징

-생성자의 이름은 클래스의 이름과 같다.

-생성자는 리턴 값이 없으므로 리턴값을 선언하면 안된다.

-오버로딩이 가능해 여러개의 생산자가 있을 수 있다.

 

1. 기본 생성자

기본 생성자는 매개변수와 실행 코드가 없어 아무 일도 하지 않고 단순 리턴해는 생성자이다.

디폴트 생성자라고도 부른다.

Circle클래스와 기본생성자

생성자가 없는 클래스는 있을 수 없다.객체가 생성될 때 반드시 생성자가 실행되기 때문이다.

생성자가 없는 경우 컴파일러는 기본 생성자를 자동으로 생성한다.

 

2. 매개 변수가 있는 생성자

사용자가 디폴트 생성자 외에 특정 목적에 의해 만든 생성자로 기본 생성자와 매개변수에 차이가 있다.

매개 변수가 있는 생성자

 

매개 변수가 있는 생성자를 호출할때 매개 변수를 입력해 주어야한다.

기본 생성자와 같이 호출해주면 오류가 난다.

 

3. this

this는 객체자신을 가리키는 레퍼런스이다. 정확히 표현하면 현재 실행되고 있는 메서드가 속한 객체에 대한 레퍼런스이다.

 

this의 필요성

this가 필요한 이유는 코드의 가독성을 높이기 위해서인데 코드에서 변수의 이름들이 매우 많다면 이해가 어려울 수도 있다 하지만, 매개변수와 멤버 변수의 이름이 같다면 구분을 하기도 어려울 것이다. 이런 경우에 this를 이용하면 된다.

 

4. this()

this()는 클래스 내에서 생성자가 다른생성자를 호출할 때 사용하는 코드이다.

 

this() 사용시 주의할 점

-this()는 생성자 코드에서만 호출할 수 있다.

-this()는 같은 클래스 내 다른 생성자를 호출할 때 사용

-this()는 반드시 생성자의 첫 번째 문장이어야 한다.

 

 

소멸자

참조하지 않는 배열이나 객체를 자동적으로 garbage collector을 이용해 힙 영역에서 제거시킨다.

객체를 소멸시키기 위해 객체 소멸자 finalize() 메서드가 호출된다.

직접 System.gc()로 garbage collector을 부를 수 있지만 기본적으로 java는 메모리를 개발자가 직접 관리하지 않으므로 System.gc()를 사용하는 경우는 드물다.