# 사라진 디폴트 생성자 #### 생성자가 없다면? 생성자가 없는 클래스의 경우 객체를 어떻게 만들어야 할까요? ``` class Hero { String name; int hp; } ``` 정답은 아래와 같습니다. ``` Hero h1 = new Hero(); // 디폴트 생성자 호출 System.out.println(h1.name); // null System.out.println(h1.hp); // 0 ``` #### 디폴트 생성자? 정의된 생성자 분명 없는데 어떻게 호출이 가능한 것일까요? 생성자가 없는 경우, 자바는 기본 생성자를 추가합니다. 이를 "디폴트 생성자"라 합니다. ``` class Hero { String name; int hp; // 디폴트 생성자 // - 파라미터 및 중괄호 내부 없음 // - 생성자가 없는 경우, 자동 기입 됨 Hero() { } } ``` ### 정리 | 생성자 없는 경우 | 생성자가 있는 경우 | |:-----------------|:--------------------| | 디폴트 생성자 자동 기입 | 디폴트 생성자 기입 X | ## 문제 주어진 코드가 실행되지 않는 이유를 분석하고 수정하여, 출력 예와 같은 결과를 얻으시오. ## 출력 예 ``` Drink { name: 포카리, price: 1000 } Drink { name: 박카스, price: 800 } ```
관련 강의로 이동

코드: java 1.8

public class DrinkTest { public static void main(String[] args) { // 디폴트 생성자로 객체 만들기 Drink d1 = new Drink(); d1.name = "포카리"; d1.price = 1000; // 다른 생성자로 객체 만들기 Drink d2 = new Drink("박카스", 800); // 모든 객체 출력 System.out.println(d1.toStr()); System.out.println(d2.toStr()); } } // 드링크 객체 class Drink { // 필드 String name; int price; /* 1. 디폴트 생성자를 추가하세요. */ // 생성자 Drink(String n, int p) { name = n; price = p; } // 메소드 String toStr() { return String.format("Drink { name: %s, price: %d }", name, price); } }

입력

정답이 궁금하다면? 코드를 제출해보세요!