# 음식 클래스 정의하기 #### 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을 써줘야 정상적으로 작동하는데 그 이유가 궁금합니다
## 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); } }