작성
·
206
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요. 강의 잘 듣고 있습니다.
해당 강의에서 부모 클래스인 Item의 생성자 및 print(), getPrice()메서드에 대한 접근제어자를 public으로 설정하셨습니다.
제 생각에는 ShopMain 클래스에서 부모 클래스에 접근할 때에는 모두 Item의 자식(book, album, movie)을 통해서만 접근하는 상황이고 이러한 접근 방식이 옳다고 판단되어서 부모 클래스의 생성자 및 메서드의 접근 제어자를 protected로 설정하였습니다(당연하게도 해당 예제에서 실행 결과는 public으로 했을 때와 동일합니다).
이 경우에 언젠가는 자식 클래스를 통해 접근하지 않을 경우가 발생할 수 있기 때문에 public으로 설정을 하신 걸까요? 아니면 protected로 설정하는 것이 조금 더 논리에 맞는 걸까요?
package extends1.ex;
public class Item {
private String name;
private int price;
protected Item(String name, int price) {
this.name = name;
this.price = price;
}
protected void print() { //이름과 가격은 모든 자식에서 동일하게 수행하는 기능이므로 부모에 구현
System.out.println("이름:" + name + ", 가격:" + price);
}
protected int getPrice() {
return price;
}
}
답변 1
0
저가 생각 하기 에는 상황(때)에 따라 달라 질 것 같습니다.(논리가 달라짐)
인터넷 에서 상품(item)을 보여주기(가격, 정보) 위해 서라면 public.
ex) 인터넷에서 책의 정보를 볼 때
인터넷에서 상품(item)을 살려고 할 때, 아니면 장바구니에 집어 넣을 때 라면 public 말고 dev.rudevico님 말대로 protected나 default, private를 쓸것 같습니다.
ex) 인터넷에서 책을 사려고 장바구니에 담을 때
좋은 의견 감사합니다 ㅎㅎ