프로그래밍 입문

객체의 초기화와 생성자

토픽 프로그래밍 입문 > Java 언어 > Java 기본 과정

초기화

어떤 일을 시작하기 전에 준비를 하게 되는데 이것을 다른 말로 초기화라고 한다객체 지향 프로그래밍도 초기화에 해당하는 기능이 제공되는데 이것을 생성자(constructor)라고 한다. 즉 객체를 생성할 때 항상 실행되며, 맨 처음 실행되는 메소드이다.

Calculator c1 = new Calculator(); // 생성자가 호출됨. 

c1.setOprands(10, 20);

c1.sum();

c1.avg();

Calculator class를 이용하여 계산을 하기 위해 메소드 setOprands의 값으로 10 20을 지정했다. 이 값들은 객체 내부에서 인스턴스 변수 left right의 값으로 설정되어서 유지된다. 그런데 setOprands를 호출하기 전에 sum avg를 호출한다면 원하는 결과를 얻을 수 없을 것이다.

이것은 객체 Calculator를 사용하기 위해서 사용자는 메소드 sum을 호출하기 전에 setOprands를 호출해야 한다는 것을 기억하고 있어야 한다는 것을 의미한다. 이러한 절차를 기억해야 한다는 것은 사용자 입장에서는 불편할 뿐 아니라 잘못된 사용으로 오류가 발생할 확률을 높이는 결과를 초래 할 수 있다.

생성자

그래서 사용하는 것이 생성자(Constructor)이다. 아래와 같이 인스턴스가 생성될 때 left, right의 값을 입력하도록 강제한다면 어떨까?

아래와 같은 내용이 추가 되었다. 이것이 바로 생성자이다.

public Calculator(int left, int right) {

this.left = left;

this.right = right;

}

생성자는 그 이름처럼 객체를 생성할 때 호출된다 아래는 위의 생성자를 이용해서 객체를 생성하는 방법을 보여준다.

1

Calculator c1 = new Calculator(10, 20);

생성자 덕분에 Calculator 객체를 사용하기 위해서 사실상 반드시 필요한 작업이라고 할 수 있는 좌항(left)과 우항(right)의 값을 설정하는 과정을 객체 생성 과정에서 강제할 수 있게 되었다. 절차를 하나 줄인 것뿐이지만, 객체를 사용하기 위해서는 객체를 생성해야 한다는 사실은 기본적으로 숙지하고 있는 절차이기 때문에 이 절차에 필수적인 작업을 포함시킨다는 것은 중요한 의미를 갖게 된다.

생성자의 특징

생성자의 특징은 아래와 같이 정리할 수 있다.

  • 반환값이 없는 메소드는 생성자가 유일하다. 
    생성자는 인스턴스를 생성해주는 역할을 하는 특수한 메소드라고 할 수 있다. 반환 값이 없기 때문에 return도 사용하지 않고, 반환 값을 메소드 정의에 포함 시키지도 않는다.
  • 생성자의 이름은 클래스의 이름과 동일하다.
    자바에서 클래스의 이름과 동일한 메소드는 생성자로 사용하기로 약속되어 있다.
  • 생성자는 매개변수에 따라서 여러 개를 만들 수 있다. 이중에 필요에 따라 객체를 생성시에 선택할 수 있다.

 

댓글

댓글 본문
  1. DevAndy
    외부에서 클래스를 사용하기 위해 생성하는 인스턴스를 초기화하는 역할을 합니다.
    대화보기
    • 생성자
      기본생성자의 역할은 무엇인가요?
    • 진한
      이것도 좋아요,
    • 있다.
      있다.
    • ㄱㅇㅈ
      감사합니다!! 정말 이해하기 쉬운 글입니다!