질문1) p.300 4번
문제: 다음 중 인스턴스 메소드와 클래스 메소드 에 대한 설명으로 옳은 것을 모두 고르시오.
보기:
1. 인스턴스 메소드는 특정 객체가 주체가 되어 동작한다.
2. 클래스 메소드는 수행의 주체 객체가 없다
3. 클래스 메소드는 간단한 기능을 구현에 활용하기 좋다
4. 클래스 메소드는 static 이 적용된 메소드
클래스 메소드는 static 이 적용된 메소드이며, 주체 객체 없이 수행 될수 있고
주로 간단한 기능 구현을 위해 사용돤다 정의되어있어
2,3,4 번은 맞다고 생각되고
인스턴스 메소드는 주체 객체를 통해서만 실행될수 있다고 정의되어있어서
1번도 맞는거 같은데
이러면 보기의 모든 내용이 정답이 될것같은데 혹시 제가 잘못 아는 부분이 있을까요?
질문2) p.253 4번
문제: 6. 다음 코드의 실행 결과가 나오도록 Food 클래스를 작성하시오
보기:
public class test001
{
public static void main(String[] args)
{
Food chicken = new Food("치킨",19800);
Food pizza = new Food("피자",29700);
System.out.printf("Food { name: %s, price: %d원 }\n",chicken.getName(),chicken.getPrice());
System.out.printf("Food { name: %s, price: %d원 }\n",pizza.getName(),pizza.getPrice());
}
}
class Food
{
private String name;
private int price;
Food(String _name, int _price)
{
name = _name;
price = _price;
}
String getName()
{
return name;
}
int getPrice()
{
return price;
}
}
이 코드에서 Food 클래스 내부에 getName(), getPrice() 가 있다는 것은 private 를
써서 외부에서는 접근하지 못하게 하는 문제인거 같은데 딱히 그러한 이야기가 없고
private 를 안써도 답이 나오는데 꼭 private를 선언해야 하는것 인가요?
sehongpark님의 답변
private이 없이도 동작 가능합니다
다만, 해당 장에서 private과 함께
게터와 세터 개념을 설명하였기 때문에
private을 추가한 경우가
더 올바른 코드라 할 수 있겠습니다
만약 학교 시험이라면
private을 기입한 경우 추가 점수를
미기입한 경우에는 기본점수를
주지 않을까 생각됩니다