객체 생성시 실행되는 클래스 구성요소로 객체 초기화를 위해 명시한다.
객체 생성시점에 필요한 초기 작업을 구성하기 위해 생성자를 명시해 사용할 수 있다.
클래스 내부에 개발자가 생성자를 명시하지 않으면 기본 생성자(default constructor) 를 컴파일러가 자동 삽입한다.
Person p = new Person();
Person : Data Type 이자 class 명
p : 객체를 참조하는 변수
= : assign 할당
new : 객체 생성시 사용하는 자바 예약어
Person() : Constructor 생성자 호출
public Person(){
}
생성자명은 클래스 명으로 동일하게 이루어진것을 볼 수 있다.
main함수에서 new Person();을 3번 작성하고 실행한 결과로
생성자가 3번 실행되어 객체가 3번 만들어진 결과를 볼 수 있다.
비슷한 내용으로, 객체가 각자 만들어지고 주소값이 다 다른것을 확인할 수 있다.
이는 생성자가 계속 실행됨을 의미한다.
이 예제에서는 생성자를 따로 작성해야하는 경우를 알아볼 수 있다.
별도의 생성자 코드를 작성하지 않았으므로 기본 생성자가 삽입되었을것이다.
이 결과로 메모리에 올라가고 기본 생성자
public CreditCart(){
}
가 만들어진것을 알 수 있다.
조금 수정된 예제를 살펴보자.
현재 이 경우에서는, 어떤 정보 없이도 카드를 만들어주고있다.
상식적으로 개인 정보가 필요한 경우라면 이 코드에 대한 개선작업이 필요하다는 것을 알 수 있다.
이번 예제에서 개인정보가 전달되지 않으면 신용카드객체가 생성될 수 없도록 현 예제를 업데이트 해본다.
특정 객체가 생성되기 전에 필요로 하는 초기 작업을 수행하기 위해 생성자를 직접 명시한다.
이전 예제에서는 생성자를 명시하지 않아 개인 정보를 할당받지 않아도 객체 생성이 가능했다.
하지만 신용 카드와 같은 경우에는 이를 업데이트한다. 아무런 정보 없이 카드를 만들 수 없기때문에 반드시 개인정보를 전달받아야 신용 카드 객체가 생성되도록 기본 생성자가 아닌 생성자를 명시해야한다.
객체 초기화 작업을 담당, 객체 생성시점에 필요한 초기화 작업을 말함
ex) 신용카드 객체가 생성되기 위해서는 개인정보를 할당받아 신용 등급을 확인한 후 문제가 없으면 객체가 생성(카드 발급)되도록 하는 것이 객체 초기화 작업이다.