밑에 1번이 없어도 2번에 생성자가 있는데 디폴트생성자라는거를 왜 만들어야만 실행이 되는건지 이해가 안되네요 =_ㅠ 어려워요 자바.. 생성자와 객체? 객체생성하는거 ? 랑 차이점두 잘 모르겠구용 ㅎㅎ;; 1번 ``` Drink(){ } ``` 2번 ``` public Drink(String n, int p) { name = n; price = p; } ``` ----------------------------------------- #사라진 디폴트 생성자 ## CODE <a class='btn btn-default' href='/codes/11082'>Link</a> ``` public class DrinkTest { public static void main(String[] args) { // 1. 디폴트 생성자로 객체 만들기 Drink d1 = new Drink(); d1.name = "포카리"; d1.price = 1000; // 2. 다른 생성자로 객체 만들기 Drink d2 = new Drink("박카스", 800); // 3. 두 객체를 배열에 저장 Drink[] drinks = { d1, d2 }; // 4. 반복문을 통한 모든 객체 출력 for (int i = 0; i < drinks.length; i++) { System.out.println(drinks[i].toString()); } } } // 드링크 객체 class Drink { // 필드 String name; int price; /* 1. 디폴트 생성자를 추가하세요. */ Drink(){ } // 생성자 public Drink(String n, int p) { name = n; price = p; } // 메소드 public String toString() { return String.format("Drink { name: %s, price: %d }", name, price); } } ``` ## INPUT ``` ``` ## OUPUT ``` Drink { name: 포카리, price: 1000 } Drink { name: 박카스, price: 800 } ```
# 디폴트 생성자가 자동 삽입되는 경우 클래스 내부에 아무런 생성자가 명시되지 않았을 때. ## 제출한 코드에서 디폴트 생성자 없어도 되는거 아닌가요? 안됩니다. 왜냐? d1 변수에 연결된 객체생성 시, 문제가 생깁니다. ``` // 1. 디폴트 생성자로 객체 만들기 Drink d1 = new Drink(); d1.name = "포카리"; d1.price = 1000; ``` 따라서, 디폴트 생성자를 추가해야만 합니다. ``` Drink(){ } ``` 또는 d1객체 생성을 아래와 같이 변경하는 방법도 있겠습니다. ``` Drink d1 = new Drink("포카리", 1000); // d1.name = "포카리"; // d1.price = 1000; ``` ## PS. "생성자와 객체?" 관련 궁금증은 보다 자세히 구체화해서, 새로 질문 남겨주셔용!
감사합니다.~ㅎㅎ