생성자 메서드(Constructor)
- 객체를 생성할 때 사용되는 메서드
- 내부적으로 객체를 생성한 후 객체를 초기화하는 역할을 수행
- 특징생성자는 return 값이 없다.
- 파라미터가 없는 기본 생성자가 컴파일러에 의해 만들어진다.
- 클래스이름과 동일한 메서드
기본 생성자가 없을 경우 컴파일러가 자동으로 기본생성자를 만들어지지만,
생성자에 파라미터 값이 있는 경우 기본생성자는 별도로 생성되지 않는다. (매우 중요)
따라서 별도로 기본생성자를 별도로 적어주어야 한다.
private 생성자(Constructor)
생성자 메소드가 private 접근제어자를 가지면, 객체를 생성할수 없다. 그러면 객체를 사용하지 않고도 특정 클래스 내의 필드나 메소드를 사용 할 수 있어야 한다.
객체 생성없이 다른 클래스의 필드나 메소드는 사용하기 위해서는 필드와 메소드에 static 키워드를 사용한다.
결론 : 어떤 객체의 생성자메서드가 private이면 모든 멤버가 static키워드가 붙은 멤버가 되어야 한다
this() 생성자
클래스 내에서 다른 생성자를 호출하는 생성자
public class IntArray {
private int count; //int는 값을 대입하지 않는 경우 0으로 초기화
private int[] arr;
public IntArray() {
this(10); //this()생성자는 클래스 내부에서 다른 생성자를 호출한다.
}
public IntArray(int init) {
arr= new int[init];
}
}
static 멤버 접근 방법
클래스 이름.static 필드
클래스 이름.static 메소드
static 작동 메커니즘
클래스.catch();
static키워드가 붙어 있는 경우 new연산자를 통해 객체를 생성하지 않아도 클래스를 사용하는 시점에
static 멤버(static필드, 메소드)가 메모리의 static zone에 자동으로 loading이 된다.
private 생성자를 쓰는 이유
외부에서 객체를 만들지 못하도록 하기 위함
※추가사항
자주 사용하는 개체나 동작은 static멤버로 사용한다.
'자바 > Java (중요하고, 이해 안 되고, 어려운)' 카테고리의 다른 글
람다 Lambda (0) | 2022.10.30 |
---|---|
Comparable (0) | 2022.10.27 |
객체변수와 객체 (0) | 2022.10.26 |
자바 - 익명클래스★★ (0) | 2022.10.26 |
컬렉션 프레임워크 - Set(자바의 정석 기초편 참고) (0) | 2022.10.26 |