초기화는 어떤 일을 시작하기 전에 그 일을 하기 위해 필요한 준비와 같은 것을 말합니다. 생성자는 초기화를 객체 자체에서 할 수 있게 도와주는 기능이라고 생각하면 됩니다.
이전에는 이런식으로 언제나 setOperands() 메소드를 먼저 실행하여야 된다는 전제가 있었습니다.
좀더 편하게 사용하기 위해서는 클래스를 인스턴스화할때 left,right값을 기본적으로 지정할 필요가 있습니다.
class Calculator1{
int left,right;
//여기서 Calculator1은 생성자라고 합니다.
//클래스 Calculator1이 생성될 때 ,
//자동으로 클래스와 똑같은 이름의 생성자가 생성되도록 약속되어있다.
//그리고 어떤 메소드보다 먼저 실행되도록 약속되어있다.
public Calculator1(int left,int right) {
this.left=left;
this.right=right;
}
public void sum() {
System.out.println(left+right);
}
public void avg() {
System.out.println((left+right)/2);
}
}
public class CalculatorDemo3 {
public static void main(String[] args) {
//Calculator1는 클래스가 아닌 해당 클래스의 생성자이다.
//인스턴스화 할때 10,20값 기본 지정한다.
Calculator1 c1=new Calculator1(10,20);
c1.sum();
c1.avg();
Calculator1 c2=new Calculator1(20,40);
c2.sum();
c2.avg();
}
}
자바에서는 Calculator1클래스의 인스턴스가 생성될때 자동으로 클래스와 똑같은 이름을 가진 생성자가 호출되도록 약속되어있습니다. 그리고 생성자를 그 어떤 메소드보다 먼저 실행되도록 약속되어있습니다.
1) 클래스 내 생성자를 선언하지 않을 시, 기본 생성자가 자동으로 생성됨을 숙지.
2) 생성자의 이름은 클래스 이름과 동일하네요. 임의 이름으로 못 씀을 숙지.
3) 앞으로는 Calculator1 c1=new Calculator1(10,20); 과 같은 객체생성 과정을
[클래스형식][클래스변수이름] = [new][생성자(임의로 설정한 입력변수)]
라고 일반화 하면 되겠네요.