만약 객체 생성 직후 객체를 초기화해야한다면, 생성자를 사용하면 된다.

 

생성자란?

객체 생성 직후 객체를 초기화 해야할 때 사용하는 메서드이다. 클래스명과 동일한 메서드명을 가지고 반환 타입이 없는 것 외에는 일반 메서드와 동일한 형태이다.

  • 생성자 예시
package construct;
public class MemberInit {
		String name;
    int age;
    int grade;

  //추가
	void initMember(String name, int age, int grade) {
			this.name = name;
			this.age = age;
			this.grade = grade;
  } 
}
  • this 키워드
    • 클래스를 가리키는 예약어
    • 위의 initMember()처럼 멤버 변수와 메서드의 매개변수 이름이 동일할 때 구분하기 위해서 사용
    • 참고로 메서드 입장에서는 매개변수가 멤버변수보다 더 우선순위를 가진다**(매개변수 > 멤버변수)**
    • 생략 가능하고, 없을 때 지역 변수 → 멤버 변수 순서로 찾는다
    • 구분을 꼭 해야하는 경우에만 선택적으로 사용하는 것이 권장된다

 

생성자 호출

생성자는 객체 생성후 ‘()’로 호출하면 된다. 보통 객체 생성과 생성자 호출을 동시에 한다.

new MemberConstruct("user1", 15, 90);
- new MemberConstruct : 객체 생성
- MemberConstruct(...) : 생성자 호출
  • 생성자 호출로 코드 제약을 걸 수 있다
    • 생성자를 실수로 호출하지 않는 경우 객체는 생성되었지만, 값이 초기화되지 않아 의미없는 정보를 가진 객체가 생성될 수 있고, 이는 에러의 가능성이 있다
    • 따라서 기본/직접 정의한 생성자를 강제로 호출하게 함으로써(호출하지 않을 시 컴파일 에러) 객체의 초기화를 강제해 유령 객체가 등장할 가능성을 원천 차단할 수 있다

생성자를 사용하면 필수값 입력을 보장할 수 있다!

 

기본 생성자

생성자가 하나도 없다면 자바에서 기본 생성자(클래스명())은 자동으로 만들어준다. 하지만, 사용자 정의 생성자가 하나라도 있다면 자바는 기본 생성자를 만들지 않는다.

 

 

Reference

인프런 '김영한의 실전 자바 - 기본편'

+ Recent posts