생성자 (Constructor)
객체가 생성될 때 객체를 초기화하는 메서드
객체를 생성할 때에만 값 설정 가능
버거 판매
- Burger 클래스를 선언하고, 인스턴스를 생성함과 동시에 버거의 이름과 가격을 초기화하는 프로그램을 작성하시오.
문제 분석
- 생성자 : 객체가 생성될 때 객체를 초기화하는 메서드
- 클래스.필드 = n vs 메서드를 통한 상태 변경
- 상태를 출력하는 메서드의 작성
코드 작성
package ex04;
class Burger {
// 상태 : name, price
private String name;
private int price;
// 생성자 : stack에 저장된 데이터를 heap에 옮기기 : 초기화
public Burger(String n, int p) {
name = n;
price = p;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
public class BurgerTest {
public static void main(String[] args) {
Burger b1 = new Burger("기본버거", 2000);
System.out.println("버거 이름 : " + b1.getName());
System.out.println("버거 가격 : " + b1.getPrice());
// System.out.println(b1.name);
// System.out.println(b1.price);
// b1.name = "기본버거";
// b1.price = 2000;
}
}
결과

내용 정리
- 생성자 생성 이후 클래스 내부 상태를 직접 변경?
- 문법 상 오류는 없으나, 객체 지향에 맞지 않는 프로그래밍
- 이를 막기 위한 접근제어자 private 사용
- 클래스 상태는 행위(메서드)로만 변경
- 각 행위에는 가능하면 하나의 책임(상태)만을 맡도록 설정
- 추후 메서드 관리가 용이
Share article