생성자
- 클래스를 인스턴스로 만들어주는 특별한 메소드.
- 반드시 new 라는 키워드로 호출해야 한다.
- 생성자 이름은 인스턴스로 만드려는 클래스의 이름과 동일해야 함
생성자를 직접 정의해 사용하는 두 가지 이유
1. 멤버변수의 초기화(초기 값 할당)
2. 인스턴스 생성과 동시에 다른 메소드를 호출
Java 파일이 실행되는 과정
Java 파일을 실행하려면 바이트코드로 변환이 되어야 한다.
바이트코드로 변환 할 때, 생성자 정의가 안되어 있다면
기본생성자를 자동으로 생성해 준다.
바이트코드
java 파일을 바이트코드로 변경 한 후 변경된 파일을 JVM에서 실행한다.
java 파일을 바이트코드로 변경하는 과정을 컴파일 이라고 함.
사람이 짠 코드를 기계가 알도록 만드는 과정이 compile
생성자 만들어 호출해보기
생성자를 이용한 멤버변수 초기화 예제
// 1
public class CoffeeShop {
int iceAmericano;
int hotAmericano;
public CoffeeShop() {
iceAmericano = 2500; // 초기값 할당
hotAmericano = 2000; // 초기값 할당
}
public int orderCoffee(int menu, int quantity) {
if (menu == 1) {
return iceAmericano * quantity;
}
return hotAmericano * quantity;
}
// 2
public static void main(String[] args) {
// 생성자 호출
CoffeeShop cs = new CoffeeShop();
// 아이스아메리카노 5잔 주문
int price = cs.orderCoffee(1, 5);
System.out.println(price);
}
}
파라미터가 있는 생성자 만들고 호출해보기
커피 가격을 커피숍 인스턴스마다 다르게 할당하고 싶다면?
public class CoffeeShop {
... 생략 ...
// 생성자에 파라미터를 추가합니다.
public CoffeeShop(int iceAmericano, int hotAmericano) {
iceAmericano = iceAmericano; // 초기값 할당
hotAmericano = hotAmericano; // 초기값 할당
}
... 생략 ...
public static void main(String[] args) {
// 생성자 호출
CoffeeShop cs = new CoffeeShop(); // 에러!
... 생략 ...
}
}