※ 생성자의 개념
: 생성자는 객체가 생성될 때 초기화를 위해 실행되는 메소드이다. 조금 더 자세히 설명하자면 하나의 객체가 생성이 될 때 필드들의 메모리 공간이 할당되지만 값을 가지지는 못한 상태인데 이 생성자를 호출하여 필드들의 값을 설정해주는 것이다.
※ 생성자의 정의와 호출
- 생성자는 객체가 생성되는 순간에 자동으로 호출된다.
- 생성자의 이름은 클래스의 이름과 동일하다.
- 생성자는 오버로딩(overloading)이 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class rootable { int id; public rootable(int x) { // 생성자 이름은 클래스 이름과 동일 this.id = x; } public rootable() { // 생성자는 리턴 타입 없음 this.id = 0; } public static void main(String[] args) { rootable ob1 = new rootable(3); // new를 통해 객체를 생성할 때만 생성자가 호출됨. rootable ob2 = new rootable(); rootable i; } } | cs |
※ 기본 생성자
: 기본 생성자(default constructor)란 인자도 없고 실행 내용도 없이 단순 리턴하는 생성자이다.
: 이 기본 생성자를 디폴트 생성자라고도 한다.
1 2 3 | public class rootable{ public rootable() { } // 기본 생성자 } | cs |
- 객체가 생성될 때에는 생성자가 호출되어야 하기 때문에 클래스에는 최소한 하나의 생성자가 선언되어야 한다. 이러한 이유 때문에 만약 개발자가 따로 생성자를 선언해주지 않았다면 컴파일러가 기본 생성자를 자동으로 생성해준다.
- 하지만 기본 생성자가 항상 자동으로 생성되는 것은 아니다. 만약 개발자가 하나라도 생성자를 선언하였을 경우에는 컴파일러가 기본 생성자를 만들지 않기 때문에 기본 생성자 호출 시에는 컴파일 에러가 발생된다.
※ this()
: this()는 한 클래스 내에서 한 생성자에서 다른 생성자를 호출할 때 사용하는 자바 코드
- 주요 특징 3가지
1) this()는 생성자 코드에서만 사용할 수 있다. → 생성자가 아닌 일반 메서드에서는 this() 사용 불가
2) this()는 동일한 클래스 내의 다른 생성자를 호출할 때 사용한다.
3) this()는 반드시 생성자의 첫 번째 문장에서 사용되어야 한다. ← 첫 번째 문장이 아니면 컴파일 오류 발생
※ 객체의 소멸
: 자바에는 new를 통해 객체를 생성하고, 생성 시 호출되는 생성자를 정의할 수는 있지만 이와 반대로 객체를 소멸시키고, 소멸될 때 호출되는 소멸자 메소드라는 것은 JAVA에 존재하지 않는다.
→ 객체의 소멸은 개발자가 따로 작성할 필요 없이 자바 가상 머신(JVM)의 가비지 컬렉터(garbage collector)에 의해 적절한 시점에 자동으로 수집되어 가용 메모리에 리턴된다.
'Develope > Java' 카테고리의 다른 글
접근 지정자 (0) | 2020.05.10 |
---|---|
가비지와 가비지 컬렉션 (0) | 2020.05.10 |
메소드 오버로딩과 this (0) | 2020.05.06 |
JAVA 5일차 (0) | 2020.04.12 |
JAVA 4일차 (0) | 2020.04.01 |