1. 생성자
- 객체를 생성과 동시에 초기화하는 메서드
- 생성자 이름 = 클래스 이름
1. BurgerTest 예제
package ex04;
class Burger {
private String name;
private int price;
// 모든 상태가 변경되는 것은 아님(final) - 내가 정하는 것
// 상태 확인 메서드(2개 -> 상태가 2개니까)
public String getName() {
return name;
}
public int getPrice() {
return price;
}
// 생성자 - 사용법이 메서드와 같다
public Burger(String n, int p) { // String n, int p은 stack에 생김 - 메서드 종료(stack사라짐)될 때 사라짐
name = n; // heap에다가 데이터를 옮기는 방법
price = p;
}
}
public class BurgerTest {
public static void main(String[] args) {
Burger b1 = new Burger("기본버거", 2000);
//b1.name = "기본버거"; // 문법적으로는 맞지만 객체지향 프로그램X - 행위를 통해서 상태 변경
//b1.price = 2000;
System.out.println(b1.getName());
System.out.println(b1.getPrice());
}
}

2. Television 예제
package ex04;
class Television {
private int channel;
private int volume;
private boolean onOff;
Television(int c, int v, boolean o) {
channel = c;
volume = v;
onOff = o;
}
void print() {
System.out.println("채널은 " + channel + "이고 볼륨은 " + volume + "입니다.");
}
}
public class TelevisionTest {
public static void main(String[] args) {
Television myTv = new Television(7, 10, true);
myTv.print();
Television yourTv = new Television(11, 20, true);
yourTv.print();
}
}

2. 기본 생성자 (디폴트 생성자, default contstructor)
- 기본 생성자 = 매개 변수가 없는 생성자
- 개발자가 생성자를 하나도 정의하지 않으면 자바 컴파일러는 기본 생성자를 자동으로 만든다.
- 기본 생성자는 자동으로 모든 멤버의 변수를 기본값으로 초기화한다.
- 수치형 변수(int 등) = 0
- 참조형 변수 = null
- 부울형 변수 = false
package ex04;
class Box {
int width;
int height;
int depth;
}
public class BoxTest {
public static void main(String[] args) {
Box b = new Box();
System.out.println("상자의 크기: (" + b.width + "," + b.height + ","
+ b.depth + ")");
}
}

- (cf. 2-2) 개발자가 생성자를 하나라도 선언하면, 컴파일러는 기본 생성자를 생성하지 않는다.
→ 컴파일러가 개발자의 의도를 훼손하지 않기 위해서 (e.g. 박스 생성시 반드시 박스의 크기를 지정해야 한다.)

Share article