프로그래밍 언어/Java

java 5강 생성자란?

happy_life 2021. 11. 3. 11:54

 

생성자

new 연산자와 같이 사용되고,

클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당합니다.

class Calculator{
	static double PI = 3.14;
	int left, right;
	
	public void setOprands(int left,int right) {
		this.left = left;
		this.right = right;
	}
	
	public void sum() {
		System.out.println(this.left + this.right);
	}
}

public class cal {

	public static void main(String[] args) {
		
		Calculator c1 = new Calculator();
		c1.setOprands(20, 10);
		c1.sum();
	}
}

위의 코드에서 누군가 setOprands 에서 left와 right 값을 초기화해주지 않으면 오류가 발생할 것입니다.

그렇다면 이런 코드는 어떨까요?

 

class Calculator{
	static double PI = 3.14;
	int left, right;
	
	public Calculator(int left,int right) {
		this.left = left;
		this.right = right;
	}
	
	public void sum() {
		System.out.println(this.left + this.right);
	}
}


public class cal {

	public static void main(String[] args) {
		
		Calculator c1 = new Calculator(10,20);
		
		c1.sum();
	}
}

 

실행결과

class Calculator 와 이름이 동일한 메소드를 생성해줍니다.

이 메소드는 setOprand가 하고 있던 역할을 똑같이 해줍니다.

여기서 메소드인 Calculator를 생성자라고 하는것입니다.

 

특징1)

생성자는  return값이 없는메소드인데요,

원래 return값이 없으면 void를 써주어야 하지만,

특수한 것이라 void를 쓰지않기로 통일되어있습니다.

 

특징2)

사용자가 정의한 생성자가 하나도 없는 경우,

컴파일러가 자동적으로 기본 생성자를 추가해줍니다.