반응형
8. 생성자(Constructor)
8.1 생성자(Constructor)의 특징
특별한 형태의 method
클래스 이름과 같은 method
리턴타입이 없음(void라고 할 수 있음)
object가 생성될 때 자동호출됨(개발자가 직접 호출할 수 없음)
new 클래스이름()
new 클래스이름: object 생성
클래스이름(): 생성자가 호출됨
용도: 객체의 초기화 작업(기본작업)을 처리
8.2 기본 생성자(default constructor)
매개변수가 없는 생성자
클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다.
생성자가 하나라도 있으면 컴파일러는 기본 생성자를 추가하지 않는다.
class DefaultConstructor {
int x;
public void setX(int x) { this.x = x; }
public int getX() { return x; }
// 컴파일러에 의해 자동 삽입된 기본 생성자
public DefaultConstructor() { }
public static void main(String[] args) {
DefaultConstructor p = new DefaultConstructor();
p.setX(3);
}
}
8.3 매개변수가 있는 생성자
8.4 생성자의 오버로딩
생성자도 method이므로 오버로딩이 가능함
8.5 메서드 오버로딩(method overloading)
overload - 과적하다. 부담을 많이 지우다.
하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것
오버로딩의 조건
메서드의 이름이 같아야 한다.
매개변수의 개수 또는 타입이 달라야 한다.
매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다(리턴타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다).
public void print();
public void print(int n);
public void print(String str);
public String print(); // Error
8.6 this와 this()
8.6.1 this
객체 자신을 가리키는 참조변수(객체의 시작 주소를 가리킴)
멤버변수와 지역변수의 이름이 같은 경우 구별하기 위해 사용
8.6.2 this()
다른 생성자를 호출할 때 사용
this() 코드는 생성자에서 첫번째 라인에 작성해야 함
8.7 변수의 초기화
8.7.1 지역변수 : 연산, 출력 등의 작업을 하기 전에 반드시 초기값을 할당해야 함
잘못된 사용 예
8.7.2 전역변수(멤버변수) : 초기화를 하지 않아도 기본값이 할당됨
8.7.2.1 기본자료형
정수형 변수 : 0
실수형 변수 : 0.0
문자형 변수 : \0 (null 문자)
논리형 변수 : false
8.7.2.2 객체자료형(참조변수)
null
8.8 private 생성자
반응형