1. 생성자(constructor)란?

  • new 키워드를 사용해서 어떤 클래스에 대한 오브젝트(인스턴스)를 생성할 때,
    자동적으로 호출되어 실행되는 특수한 메소드이다.
  • 생성자가 하는 일은 클래스를 처음 만들때 멤버변수나 상수를 초기화하는 것이다.
  • 생성자는 오브젝트 생성시 한 번만 수행된다.
  • 기본적으로 메소드기 때문에 메소드의 특징을 그대로 가지고 있지만 반환값이 없다.

2. 생성자(Constructor) 작성 규칙

  • 생성자의 이름은 함수지만 클래스의 이름과 동일하게 붙인다.
  • 생성자의 리턴형은 지정하지 않는다.(void 라고 쓰지도 않는다)
  • 오버로드된 형태로 여러 개의 생성자를 작성할 수 있다.
  • 클래스 작성시 생성자를 정의하지 않으면 디폴트 생성자(default constructor)가 제공된다.
  • 왜냐면 기본적으로 생성자 하나를 컴파일 과정에서 자바의 컴파일러가 만들어주기 때문이다.
  • 디폴트 생성자는 매개변수가 없고 구현 코드도 없다.

3. 생성자 오버로드란(overload)?

  • 서로 다른 시그니처를 갖는 여러 함수를 같은 이름으로 정의하는 것이다.

    	ex)
    	- 오브젝트(인스턴스) 생성 문장				->	호출되는 생성자
    		Member m  = new Mebmer();			->	Member()
    		Member m1 = new Member(10);			->	Member(int a)
    		Member m2 = new Member(10, “abc”);	->	Member(int a, String s)

4. 함수 시그니처(Method Signature)란?

  • 두 함수의 이름, 매개변수의 개수, 그 타입이 모두 같다면
    이 두 함수의 시그니처는 같다고 할 수 있다.

  • 두 함수는 시그니처가 같다.

    		ex)
              int sum ( int a , int b , double c);
              int sum ( int i	, int m	, double x);

5. 추가사항

자바 컴파일러는 생성자가 하나도 없는 경우에만 디폴트 생성자를 제공한다.
따라서 프로그래머가 생성자를 직접 추가하면 디폴트 생성자는 만들어지지 않기 때문에,
디폴트 생성자를 만들지 않은 상태에서 오브젝트를 디폴트 생성자로 생성하려고 한다면,
당연하게도 오류가 발생한다. 
그렇기 때문에 디폴트 생성자를 사용하고자 한다면 꼭 디폴트 생성자도 선언을 해주어야 한다.
profile
안녕하세요! 개발을 배우기 시작한 학생의 학습공간입니다.

0개의 댓글