JAVA101

준비중..

JAVA101

자바 프로그래밍 입문

11 생성자

# 생성자 ## 들어가며 --- 이전 시간, 객체지향 프로그래밍의 장점과 클래스와 객체에 대한 내용을 배웠습니다. ![클라우드스터딩-자바-클래스와-객체-리뷰](https://i.imgur.com/ZgTtiCc.png) 이번 시간에는 객체를 만드는 특별한 방법! 이를 알아보도록 하죠. ## 목차 --- 1. 생성자란 2. 생성자의 역할 3. 디폴트 생성자 ## 1. 생성자란 --- 생성자란, *객체를 만드는 특별한 메소드*입니다. 사실 우리는 이미 생성자를 사용해 보았는데요. 아래에서 한 번 생성자 호출 코드를 찾아봅시다. ``` Bicycle b = new Bicycle(); ``` 눈치 빠르신 분들은 촉이 왔을 겁니다. 생성자 또한 특별하지만 결국 **메소드**인 거죠. 따라서 메소드를 호출하면 반드시 따라오는 소괄호! 이를 찾으면 `Bicycle()`이 생성자인 것을 알 수 있습니다. 일반 메소드 호출과 차이가 있다면, `new`라는 키워드를 함께 사용한다는 점! 이를 기억하세요. ![클라우드스터딩-자바-생성자-객체-생성](https://i.imgur.com/6OBtJYV.png) 그렇다면, 이러한 생성자는 어떤 역할을 할까요? ## 2. 생성자의 역할 --- 생성자는 *객체 생성*과 *필드 초기화*라는 두 가지의 역할을 수행합니다. ![클라우드스터딩-자바-생성자의-역할](https://i.imgur.com/sd2ab4i.png) 보통 객체를 생성하고 나면, 필드 값을 초기화하는데요. 이전 시간 우리가 실습을 통해 연습했던 코드! 이를 복습할 겸 다시 한번 확인해보도록 합시다. ``` /* 1. 객체 생성 */ Bicycle b = new Bicycle(); /* 2. 필드 초기화 */ b.name = "부릉2"; b.weight = 21.74; b.price = 899000; ``` 위 코드를 한 줄로 줄일 수 있다면 어떨까요? 영혼을 팔아서라도 그렇게 해야 할 것입니다. 농담이구요. 아무튼 위 코드는 한 줄로 줄일 수 있습니다. 어떻게요? 바로 생성자를 통해 말이죠. ``` /* 객체 생성과 동시에 초기화 */ Bicycle b = new Bicycle("부릉2", 21.74, 899000); ``` 무언가 익숙한 코드죠? 어디서 많이 봤던 형태 아닙니까? 맞습니다. 메소드를 호출할 때, 값을 전달하는 형태입니다. 생성자 또한 메소드이기에 가능한 거죠. ![클라우드스터딩-자바-생성자를-통한-초기화](https://i.imgur.com/rTJiWOX.png) 그런데 위 코드는 지금 바로 동작하진 않습니다. 왜죠? 특별한 메소드 즉 생성자가 정의되어있지 않기 때문이죠. 그렇다면 올바른 동작을 위해 3개의 파라미터를 갖는 생성자를 추가해주면 되겠습니다. 어디에요? `Bicycle` 클래스 내부에 말이죠. 주의할 점이 있다면 메소드 정의와 달리 *반환 타입을 적지 않는 점*. 이를 기억하면 되겠습니다. ``` class Bicycle { String name; double weight; int price; /* 파라미터가 있는 생성자 - 객체 생성 및 필드 초기화 */ public Bicycle(String s, double d, int i) { name = s; // 파라미터 s를 객체의 이름으로 대입 weight = d; // 파라미터 d를 객체의 무게로 대입 price = i; // 파라미터 i를 객체의 가격으로 대입 } } ``` ## 3. 디폴트 생성자 --- 그럼 여기서 질문! 생성자가 없었을 땐 어떻게 객체가 만들어졌던 걸까요? ``` Bicycle b = new Bicycle(); // 분명 생성자가 없었는데?! ``` 아래와 같이 생성자를 만들어줘야 했던 것 아닙니까? ``` class Bicycle { String name; double weight; int price; /* 생성자 */ public Bicycle() { // 비어있음 } } ``` 정답부터 말씀드리자면, 디폴트 생성자 때문입니다. 디폴트 생성자는 클래스 내부에 *생성자가 존재하지 않는 경우 자동으로 추가*되는 생성자인데요. 위 코드의 예와 같이 파라미터가 없고, 중괄호 내부가 비어있다는 점이 특징입니다. ## 요약 --- #### 정의 및 역할 - 생성자는 객체를 만드는 특별한 메소드다. - 생성자는 역할은, 객체 생성과 필드 초기화이다. #### 특징 - 필드 초기화를 위해서는 파라미터가 있는 생성자를 정의해야 한다. - 클래스에 생성자가 없을 땐, 디폴트 생성자가 추가된다. ## 확인하기 --- <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>