밑에 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 }
```
sehongpark님의 답변
# 디폴트 생성자가 자동 삽입되는 경우
클래스 내부에 아무런 생성자가 명시되지 않았을 때.
## 제출한 코드에서 디폴트 생성자 없어도 되는거 아닌가요?
안됩니다. 왜냐? d1 변수에 연결된 객체생성 시, 문제가 생깁니다.
```
// 1. 디폴트 생성자로 객체 만들기
Drink d1 = new Drink();
d1.name = "포카리";
d1.price = 1000;
```
따라서, 디폴트 생성자를 추가해야만 합니다.
```
Drink(){
}
```
또는 d1객체 생성을 아래와 같이 변경하는 방법도 있겠습니다.
```
Drink d1 = new Drink("포카리", 1000);
// d1.name = "포카리";
// d1.price = 1000;
```
## PS.
"생성자와 객체?" 관련 궁금증은 보다 자세히 구체화해서, 새로 질문 남겨주셔용!
lts016님의 답변
감사합니다.~ㅎㅎ