생성자(Constructor)란?
자바의 객체 지향 프로그래밍에서 클래스의 생성자는 객체 생성 시 제일 먼저 호출되는 특수한 메서드다. 객체가 고유한 상태를 초기화하고 정상적인 작업을 수행할 수 있게 준비하는 매우 중요한 역할을 수행한다. 생성자는 클래스로부터 객체를 생성할 때 new 연산자와 함께 호출되어 객체의 필드를 초기화하고, 메서드를 호출해 객체를 사용할 준비를 하는 특별한 블록이다.
생성자는 왜 필요한가?
객체의 상태는 필드(변수)에 의해 결정됩니다.
필드에 특정 값을 설정함으로써 객체마다 다른 상태를 지닐 수 있다.
클래스 설계상에 초기값을 설정해주지 않으면, 모든 객체가 동일한 데이터를 갖게 될 위험이 있다.
따라서 생성 시점부터 원하는 초기값을 객체에 설정할 수 있도록 생성자가 필요!
Default 생성자
엔티티 클래스에 객체(붕어빵)의 변수값 (속재료)을 지정 후
메인함수 부분에서 new() 키워드로 객체의 변수를 지정해주기
public class Bungeobbang {
public String ingredients;
public Bungeobbang() {
}
import entity.Bungeobbang;
public class BungeobbangTest {
public static void main(String[] args) {
Bungeobbang b1 =new Bungeobbang();
b1.ingredients="슈크림";
}
}
매개변수가 있는 생성자
생성자를 생성하면, 기본(default) 생성자는 별도로 입력해야 한다.
프로그램에서 간단하게 만들어줄 수 있으니 적극활용하자~
누가이용하든 불편함없게 기본생성자, 매개변수가 있는 생성자 모두 만들어준다!
생성자는 보통 필드 아래에 삽입한다!
package entity;
public class Bungeobbang {
public String ingredients;
public String price;
// 디폴트 생성자
public Bungeobbang() {
}
// 매개변수가 있는 생성자
public Bungeobbang(String ingredients) {
this.ingredients = ingredients;
}
}
import entity.Bungeobbang;
public class BungeobbangTest {
public static void main(String[] args) {
Bungeobbang b1 =new Bungeobbang();
b1.ingredients="슈크림";
Bungeobbang b2 = new Bungeobbang("피자");
}
}
메소드 오버로딩을 이용해보기
가격 변수도 추가하자.
슈크림 붕어빵은 1500원, 피자 붕어빵은 2000원, 단팥 붕어빵은 아직 가격을 못정해서 가격을 비워놔야겠다.
package entity;
public class Bungeobbang {
public String ingredients;
public String price;
public Bungeobbang() {
}
// 속재료와 가격을 정한 붕어빵
public Bungeobbang(String ingredients,String price) {
this.ingredients = ingredients;
this.price=price;
}
// 가격을 아직 못정한 붕어빵
public Bungeobbang(String ingredients) {
this.ingredients = ingredients;
price = "싯가";
}
// 붕어빵 가격표를 보여주세요.
public void show(){
System.out.println(ingredients+"붕어빵, 가격은 "+price);
}
}
import entity.Bungeobbang;
public class BungeobbangTest {
public static void main(String[] args) {
Bungeobbang b1 =new Bungeobbang();
b1.ingredients="슈크림";
b1.price="1500원";
Bungeobbang b2 = new Bungeobbang("피자","2000원");
Bungeobbang b3 = new Bungeobbang("단팥");
b1.show();
b2.show();
b3.show();
}
}