객체가 생성될 때 객체를 초기화하는 특수한 메소드.
개발자가 생성자를 정의하지 않아도 자바에서 기본 생성자를 자동으로 만듬.
1. BurgerTest예제
코드
package ex04;
class Burger {
private String name; //상태
private int price; //상태
//변경되지 않는 상태는 final
public String getName() {
return name;
}
public int getPrice() {
return price;
}
// 생성자 => 사용법이 메서드랑 똑같음(호출할 때 열림) => stack에 생김
public Burger(String n, int p) {
name = n; // =>heap에다가 값을 옮겨놓는거임
price = p; // =>위랑 같음 , 이걸 초기화라함.
}
}
public class BurgerTest {
public static void main(String[] args) {
Burger b1 = new Burger("기본버거", 2000); // => new는 생성자를 호출하는 코드
// b1.name = "기본버거";
// b1.price = 2000;
System.out.println(b1.getName());
System.out.println(b1.getPrice());
}
}결과

2. CatTest예제
코드
package ex04;
class Cat {
private String name;
private String color;
public String getName() {
return name;
}
public String getColor() {
return color;
}
//초기화 생성자
public Cat(String name, String color) {
//생성자도 스택이 있다.
//생성자는 항상 자기를 호출한 상위 class를 찾을 수 있다.
this.name = name; // this는 heap을 가리킴.
this.color = color;
}
}
public class CatTest {
public static void main(String[] args) {
Cat cat = new Cat("Kitty", "White");
System.out.println(cat.getName());
System.out.println(cat.getColor());
}
}결과

3. TelevisionTest 예제
코드
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();
}
}결과

Share article