[Java] 생성자

Hyo Kyun Lee·2022년 1월 30일
0

Java

목록 보기
14/66

1. 생성자

새로운 인스턴스를 만들때 사용되는 인자를 일컫는다.

클래스를 만들고, 클래스 속성과 메소드에 접근하기 위해 참조변수에 인스턴스를 할당해주었다.

public class Car{
	String name;
}

이 class를 다른 참조변수가 가르키도록 인스턴스를 선언해줄때

public static void main(String[] args){
	Car c1 = new Car();
}

위와 같이 선언해주게 되고, 이때 new 연산자 다음에 사용된 Car() 인자가 바로 생성자이다.

2. 생성자의 특징과 기본 생성자

위에서 new 연산자 다음에 오는 인자가 생성자라고 해서, 구조적으로 다소 생소하게 보일 수 있는데 사실 생성자는 하나의 class를 생성할때 바로 정의되는 인자이다.

public class Car{
  public class(args){
        ..
        }
  fields ...
    	..
  public void main(args){
        }
        
}

fields, 메소드와 구조적으로 약간의 차이가 있다.

  • return 형이 없다.
  • 위와 같이 생성자를 따로 정의하지 않는다면, 매개변수가 없는 생성자가 컴파일 시 자동으로 생성된다.

즉 위의 경우엔 인자가 있는 생성자가 만들어진 경우고, 위 과정이 누락되었다면 매개변수가 없는 생성자가 컴파일 시 자동으로 생성된다.
※ 자동으로 생성되는 생성자를 기본 생성자라 일컫는다.

3. 생성자의 선언

생성자는 객체를 생성할 때(=인스턴스) 특정 인자(값)을 fields 초기화에 사용하는데, 대부분의 인스턴스 선언 시 사용하는 방법이므로 생성자를 별도로 선언해주는 것이 좋다.

즉, 기본 생성자보다는 직접 생성자(인자가 있는 생성자)를 선언해주는 방향으로 생성해야 이후 fields 초기화에 적합하다고 볼 수 있다.

public class Car{
	String name;

	public Car(String n){
    	name = n;
    }
}

이처럼 Car class 내부에 Car 클래스에 대한 생성자가 선언되었고, 문자열 인자(n)을 받아 내부 fields에 초기화하는 방식으로 구성되었다.

4. 유의할 점

  • class : fields 구조 정의
  • 생성자 : 인자를 받고, fields 구조에 초기화될 수 있도록 정의, 이때 생성자에서 fields 각각 자료형은 선언할 필요 없음

0개의 댓글