# 음식 클래스 정의하기
#### CODE <a class='btn btn-default' href='/codes/41440'>Link</a>
```
public class FoodTest {
public static void main(String[] args) {
// 음식 객체 생성
Food chicken = new Food("치킨", 18000);
Food pizza = new Food("피자", 28000);
Food sushi = new Food("초밥세트", 22000);
// 객체 배열에 음식 담기
Food[] foods = { chicken, pizza, sushi };
// 모든 음식 정보 출력
for (int i = 0; i < foods.length; i++) {
System.out.println(foods[i].toString());
}
}
}
class Food {
/* 1. 필드를 추가하세요. */
String name;
int price;
/* 2. 생성자를 추가하세요. */
Food(String s, int i){
name = s;
price = i;
}
/* 3. toString() 메소드를 추가하세요. */
String toString(){
return String.format("Food { name: %s, price: %d원 }", name , price);
}
}
```
#### INPUT
```
```
#### OUPUT
```
/root/var/tmp/2021_03_15_01_12_57_25be8277/FoodTest.java:28: error: toString() in Food cannot override toString() in Object
String toString(){
^
attempting to assign weaker access privileges; was public
1 error
```
String toString() 앞에 public을 써줘야 정상적으로 작동하는데 그 이유가 궁금합니다
goodlife1359님의 답변
## public을 붙여야 하는 이유
메서드에 public 접근제한자를 붙여주면 어떤 클래스에서도 해당 메서드에 접근이 가능하게 됩니다.
즉 , 객체배열에서 toString 메서드를 호출하는 코드는 FoodTest 클래스에 선언되 있지만 ,
Food 클래스에 선언된 toString 메서드에 public 접근제한자를 붙여줘야 Food 클래스 바깥에서도 toString메서드 호출이 가능하게 됩니다.
public class FoodTest {
public static void main(String[] args) {
// 모든 음식 정보 출력
for (int i = 0; i < foods.length; i++) {
System.out.println(foods[i].toString());
}
}
}
class Food {
public String toString(){
return String.format("Food { name: %s, price: %d원 }", name , price);
}
}