innn

생성자(Constructor) 본문

JAVA/자바의 정석 기초편_남궁성(2020)

생성자(Constructor)

33삼 2022. 6. 26. 11:55

생성자(Constructor) :

인스턴스 생성때마다 호출되는 인스턴스 초기화(객체 = iv묶음, = iv 초기화) 메서드

 

원래라면 객체 생성하고 iv초기화를 해야하는데 이걸 한줄로 표현한게 생성자임.

Time t = new Time(); 이 부분도 생성자 호출이긴함. 초기화 작업을 줄여준 게 생성자

일반적으로 iv초기화한게 생성자지만, 메소드이기 때문에 {} 안에 행할 작업들을 적어놓을 수 있음.

생성자가 있으면 4개의 문장을 한줄로 (객체가 여러개일 때 편함)

 

생성자 목적 : iv 초기화 메서드가 생성자 iv 초기화를 편리하게 하려고.

기본적으로 메서드이지만, 특별한 메서드임. 고로 규칙 존재

 

iv 초기화 메서드라는 것은 애초에 대입문인 것임. 그래서 리턴값이 없어서 사실 void를 붙이는데

생성자는 항상 반환값이 없으므로 void를 안 붙임. 

 

1. 클래스 이름과 같아야함. 

2. 리턴값이 없음.

3. 모든 클래스는 반드시 생성자를 가져야함. (한 개 이상.)

객체 생성때, Card c = new Card();  --->  Card() 생성자 호출 부분이었음.

 

같은 이름의 메서드니까, 오버로딩, 그러면 매개변수가 달라야함.

 

기본 생성자

- 매개 변수가 없는 생성자

- 생성자가 하나도 없을 때만, 컴파일러가 자동 추가. 

((((그래도 작성해두는 게 좋다. 제대로된 클래스라면 꼭 작성해야함))))))

클래스이름() {} 이 형식이 기본 생성자임. 매개변수 없음.

 

객체 생성 = 기본 생성자 호출

 

매개변수 있는 생성자

 

우리가 생성자를 왜써야하냐? 

여러줄 써야할 거를 1줄로만 쓸 수 있기 때문.

만약 매개변수 있는 생성자가 없다면

 

Car c = new Car();                   // 참조변수 c를 선택해서 Car 클래스의 객체를 생성한다.

c.color = "white";                     // 참조변수 c를 이용해서 필드값을 하나하나 호출하여 초기화한다. c.필드명 = ~~ 이런 식.

c.gearType = "auto";

c.door = 4;

 

로 작성해야함.

 

그런데 이를 한 줄로 줄여주는 것이 생성자. 객체 생성할때 초기화할 값을 대입해서 객체를 생성하는 것.

Car c = new Car("white", "auto", 4);

여기서 생성자는 new 연산자 이후 Car("white", "auto", 4);  이 부분.

생성자가 객체를 생성하는 게 아님. 객체를 생성하는 건 new 연산자. 생성자가 하는 일은 객체 초기화.

 

생성자 호출 이후 {}안에 color, geartype, door는 iv 임.

원하는 값으로 셋팅하기 위해 만든게 생성자임.