inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

문제와 풀이

부모(Item) 클래스의 생성자 및 메서드의 접근 제어자가 public인 이유

해결된 질문

299

dev.rudevico

작성한 질문수 44

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;
    }
}

 

java 객체지향

답변 2

0

potone

이 문제의 경우는 extends1.ex 패키지에 모든 파일이 있어서 protected 도 작동하지만

실제 코드에서는 패키지를 다르게 구성하므로 public을 사용해야 할거 같습니다.

0

dev.rudevico

좋은 의견 감사합니다!

0

생각하는자

저가 생각 하기 에는 상황(때)에 따라 달라 질 것 같습니다.(논리가 달라짐)
인터넷 에서 상품(item)을 보여주기(가격, 정보) 위해 서라면 public.

ex) 인터넷에서 책의 정보를 볼 때

인터넷에서 상품(item)을 살려고 할 때, 아니면 장바구니에 집어 넣을 때 라면 public 말고 dev.rudevico님 말대로 protected나 default, private를 쓸것 같습니다.

ex) 인터넷에서 책을 사려고 장바구니에 담을 때

0

dev.rudevico

좋은 의견 감사합니다 ㅎㅎ

질문있습니다

0

29

1

1번 문제 질문입니다.

0

33

1

음악플레이어 문제 중 코드질문

0

27

1

9장 상속 문제와 풀이 질문

0

38

1

강의 자료에 사소한 오타가 있습니다.

0

50

2

매서드 참조값 반환??

0

66

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

70

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

76

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

66

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

97

1

Method1에서 Student 객체

0

74

1

3강 18. null 질문

0

69

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

76

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

90

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

136

1

기본편 객체지향 프로그래밍에 대한 정의

0

87

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

153

2