만약 객체 생성 직후 객체를 초기화해야한다면, 생성자를 사용하면 된다.
생성자란?
객체 생성 직후 객체를 초기화 해야할 때 사용하는 메서드이다. 클래스명과 동일한 메서드명을 가지고 반환 타입이 없는 것 외에는 일반 메서드와 동일한 형태이다.
- 생성자 예시
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
인프런 '김영한의 실전 자바 - 기본편'
'Dev Language > Java' 카테고리의 다른 글
[자바/기본] 6. 접근 제어자 (0) | 2024.01.16 |
---|---|
[자바/기본] 5. 패키지 (0) | 2024.01.04 |
[자바/기본] 3. 객체지향 프로그래밍 (0) | 2024.01.04 |
[자바/기본] 2. 기본형과 참조형 (0) | 2024.01.04 |
[자바/기본] 1. 클래스와 데이터 (4) | 2024.01.04 |