# 생성자(constructor) 호출과 정의
## 들어가며..
---
붕어빵 틀로 붕어빵을 찍어내는 마법 같은 매직!
![클라우드스터딩-자바-생성자-호출-인스턴스화-constructor][Imgur](https://i.imgur.com/dl4KpzQ.png)
클래스를 사용하여 객체를 만드는 방법! 생성자에 대해 알아보자.
1. 생성자란
2. 생성자의 역할
3. 생성자 호출과 정의
## 1. 생성자란
---
#### 무엇?
생성자란, 객체를 만드는 특별한 메소드다.
#### 코드 예?
우리는 이미 생성자를 사용했었다. 아래 코드에서 생성자를 찾아보자. 정답은 <kbd>new Cat()</kbd>이다.
![클라우드스터딩-자바-디폴트-생성자-호출](https://i.imgur.com/CR0MkmA.png)
## 2. 생성자의 역할
---
생성자는 두가지 역할을 한다.
1. 객체 생성 - 객체를 만드는 것
2. 객체 초기화 - 객체의 필드 값을 설정하는 것
#### 이전 방식
이전 생성자를 몰랐을 당시. 생성자는 객체를 만들기만 했다. 초기화는 따로 진행했었다.
```
/* 1. 객체 생성 */
Cat c = new Cat();
/* 2. 필드 초기화 */
c.name = "네로";
c.weight = 3.78;
c.age = 3;
```
#### 생성자 활용 방식
생성자를 활용하면, 위 코드를 단 한 줄로 만들 수 있다.
```
/* 객체 생성과 동시에 초기화 */
Cat c = new Cat("네로", 3.78, 3);
```
## 3. 생성자 호출과 정의
---
생성자 또한 특별하지만 메소드이다. 따라서 호출과 정의로 나뉘어 사용된다.
![클라우드스터딩-자바-생성자-호출과-정의](https://i.imgur.com/EJNuDFo.png)
#### 생성자 호출
생성자 호출 방식은 아래와 같다.
```
// 클래스_타입 변수명 = new 클래스_이름(전달 값);
Cat c = new Cat("네로", 3.78, 3);
```
#### 생성자 정의
생성자 또한 메소드이므로 사용을 위해 먼저 정의되어야 한다. 일반 메소드와 차이는 리턴 타입이 없다는 것.
```
class Cat {
String name;
double weight;
int age;
/* 생성자 정의 */
Cat (String s, double d, int i) {
name = s;
weight = d;
age = i;
}
}
```
## 요약
---
![클라우드스터딩-자바-생성자-요약](https://i.imgur.com/pMmmkPn.png)
#### 생성자
- 생성자는 객체를 만드는 특별한 메소드다.
- 생성자는 역할은, 객체 생성과 필드 초기화이다.
#### 생성자 특징
- 생성자 또한 메소드이기에, 호출과 정의로 나뉜다.
- 생성자와 일반 메소드와의 차이는 리턴 타입의 유무다.
## 확인하기
---
<div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5cdd129935706c001424970c" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5cdd129935706c001424970c/q/1?method=iframe"></iframe></div></div>
## 도서구매
<a href="http://www.yes24.com/Product/Goods/104740689"><img src="http://image.yes24.com/goods/104740689/XL" width="50%" /></a>