JAVA/JAVA 개념정리

생성자 개념

공부 기록장 2023. 7. 4. 16:38

정의 

객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드이며 
객체가 생성되는 순간에 자동으로 호출된다.

 

선언

먼저 생성자 선언에 앞서 클래스 이름과 멤버함수는 다음과 같다.

public class Circle
{
	int radius;
    String name;
    
    [생성자 선언 부분] 
}

 

 

다음은 [생성자 선언 부분] 에 들어갈 코드이다.

public Circle(){
   radius = 1; 
   name = "";
}

→ 매개변수 없는 생성자

 

 

public Circle(int r, String n){
	radius = r;
    name = n;
}

→ 매개변수를 가진 생성자

 

 

위와 같은 내용을 토대로 보면

  1. 생성자 이름은 클래스 이름과 동일한 것을 알 수 있다.
  2. 생성자는 여러 개 작성할 수 있다. (매개변수가 없는 생성자와 있는 생성자)
  3. 생성자에 리턴 타입을 지정할 수 없다.

 

다음은 코드를 통해 직접 알아보는 과정이다. 

여기서 객체 a 는 기본 매개변수가 없는 생성자를 호출하였고 객체 b 는 매개변수가 있는 생성자를 호출하여 radius 값이 3이고 name 값이 "안녕" 이라는 문자열을 갖도록 초기화하였다.

 

 

다음 코드에서는 생성자가 없이도 객체 생성에 있어서 컴파일 오류가 일어나지 않는 것을 알 수 있는데

그 이유는 생성자가 하나도 없는 경우 컴파일러가 기본 생성자를 자동으로 생성하기 때문이다.

 

 

기본 생성자란?  매개 변수와 실행 코드가 없이 단순 리턴하는 생성자이다.

또한 기본 생성자는 디폴트 생성자라고도 불린다.

class Circle{
	public Circle(){ }
}

 다음 코드에서 public Circle() { } 이 기본생성자이다. 

 

 

 

하지만 기본 생성자가 자동으로 생성되지 않는 경우가 있는데 다음 코드를 통해 알아보자

 코드를 보면 매개변수가 있는 생성자가 하나 있는 것을 알 수 있는데 이런 경우는 기본 생성자가 자동으로 생성되지 않는다.

 

 

 

 

결론 : 1. 생성자의 이름은 클래스 이름과 동일하다.

          2. 생성자는 여러 개 작성할 수 있다.(오버로딩)

          3. 생성자는 객체를 생성할 때 한 번만 호출된다.

          4. 생성자에 리턴타입을 지정할 수 없다.

          5. 생성자의 목적은 객체가 생성될 때, 필요한 초기 작업을 위함이다.

          6. 생성자가 하나도 없는 경우 컴파일러가 기본 생성자를 자동으로 생성한다.

          7. 생성자가 하나라도 있는 클래스에는 컴파일러가 기본 생성자를 생성하지 않는다.