[day08] java-basic : 생성자
생성자란?
public class Dog {
// 생성자 start ==========================================
Dog() {
}
// 생성자 end ==========================================
}
- 생성자는 인스턴스 객체를 만들때 사용된다.
Dog dog = new Dog();
에서Dog()
이 바로 생성자이다.
생성자는 왜 쓰는가?
- 멤버변수값을 초기화하기 위한 목적으로 생성자를 사용한다.
- 생성자는 객체를 생성할 때 속성의 초기화를 담당하게 된다.
Dog d = new Dog();
코드에선 멤버변수가 자동 초기화 된다.Dog d = new Dog("메리", 4);
코드에선 멤버변수가 메리와 4로 초기화 된다.
생성자의 특징
- 생성자는 반환형이 없다
- 생성자는 클래스명과 이름이 동일하다.
- 생성자도 오버로딩을 지원한다. 오버로딩은 같은 클래스 내에 메소드 명은 동일하지만 매개변수의 타입과 수가 다른 것이다.
- 생성자의 작성 위치는 클래스 내 멤버변수와 메소드 사이에 들어간다.
디폴트 생성자
- 인스턴스 객체를 만들때 생성자를 사용하지만 생성자는 직접 만든 적이 없을 것이다.
- 왜일까? JVM이 하나의 클래스를 로딩하다가 개발자 정의 생성자가 하나도 존재하지 않으면 자동으로 만들어주기 때문이다.
- 이렇게 JVM이 자동으로 생성한 생성자를
default 생성자
라고 한다. - 디폴트 생성자는 매개변수가 없는 형태이다.
- 사용자 정의 생성자가 하나라도 존재하면 JVM은 디폴드 생성자를 절대 만들지 않는다.
- 그래서 내가 매개변수 있는 생성자를 만들고자 한다면, 디폴트 생성자를 먼저 생성한 뒤 프로그램을 짜는 습관을 들이는 것이 좋다.
this의 사용방법
- 나와 똑같은 정의되어 있는 클래스의 메소드를 호출하는 경우 :
this.메소드명()
- 내 객체에 있는 멤버변수에 접근하는 경우 :
this.멤버변수
- new를 이용해서 이미 호출됐을때 생성자를 다시 호출하는 경우 :
this(인자값)
- 생성자 안에 this 사용자는 생성자의 brace
{ }
안에서 제일 첫 줄에 위치해야 한다. - this 호출 시 생성자 내부에서만 호출이 가능하다.
- this static 영역에서 사용이 불가능하다.
class Dog {
// 멤버변수
String name;
// 생성자01
Dog() {
// 생성자 내부에서 멤버변수 호출
this("쫑");
}
// 생성자02
Dog(String name) {
// 생성자 내부에서 멤버변수 호출
this.name = name;
}
}