# 음식 클래스 정의하기
맨 처음에 기본틀이 작성되있는 상태로 코딩했을 때는 다른 분이 질문하신것 처럼, 정답예시 같이 Food라는 class 내의 메소드에 public을
붙여야 정상적으로 코드가 작동했는데
이번에 제가 다 지우고 스스로 해봤을때는 public 을 붙이지 않았는데도 코드가 작동했습니다.
두 개의 창을 띄워놓고 비교했을 때 저는 정답예시랑 제가 쓴 코드랑 차이점을 잘 모르겠어요
다른분이 질문하신것 보니까 접근제한자라고 다음 파트에 배우는거 같은데 그 강의에서 자세히 나오나요..? ㅎㅎ
그렇다면 대답 안해주셔도 됩니다... 연습문제 다 풀고 강의듣겠읍니다...ㅎㅎ!
#### CODE <a class='btn btn-default' href='/codes/49400'>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[] food = {chicken, pizza, sushi};
for (int i=0; i<food.length; i++ ){
System.out.println(food[i].foodWords());
}
}
}
class Food{
String name;
int price;
Food(String n, int p){
name = n;
price = p;
}
String foodWords(){
return String.format("Food { name: %s, price: %d원 }", name, price);
}
}
```
#### INPUT
```
```
#### OUPUT
```
Food { name: 치킨, price: 18000원 }
Food { name: 피자, price: 28000원 }
Food { name: 초밥세트, price: 22000원 }
```
dream174822님의 답변
해당 선언 방식은 메서드 오버라이딩이기 때문입니다.
toString() 메서드가 최상위인 Object 클래스의 메서드여서 public으로 어디서든 접근해야 하기 때문에 작성해야 합니다.
만약에 메서드명을 기존에 존재하는 메서드명이 아닌 새로운 다른 메서드명을 작성하게되면 public을 작성 하지 않아도 동작 가능합니다.