# protected 접근 제한자 protected란, 접근 제한자의 하나로서, 상속 관계 클래스에게 접근을 허가합니다. ![클라우드스터딩-자바-상속-protected](https://i.imgur.com/Vwv74mq.png) 또, 같은 패키지 내 클래스들에게도 접근이 가능하게 합니다. | 접근 제한자 | 공개 범위 | |:------------:|:-----| | private | 비공개 | | default | 같은 패키지 내 공개 | | protected | 상속 관계 시 공개 + 같은 패키지 내 공개 | | public | 완전 공개 | ## 문제 주어진 코드로 농구, 축구, 탁구에 대한 설명을 출력하려 한다. 이를 위해 아래와 같은 클래스 구조를 만들어 놓았다. ![클라우드스터딩-자바-상속-](https://i.imgur.com/YBzMoOh.png) 하지만, private 필드로 인해 접근이 불가능한 상황이다. protected 키워드를 사용하여 이를 해결하고, 또 메소드 오버라이딩을 통해 출력 예와 같은 결과를 만드시오. ## 출력 예 ``` [농구]는 손으로 공을 던져 골을 넣는 운동이다. [축구]는 주로 발로 공을 차 넣는 운동이다. [탁구]는 공을 번갈아가며 주고 받는 운동이다. ```
관련 강의로 이동

코드: java 1.8

public class ProtectedFields { public static void main(String[] args) { // 객체 생성 Basketball b = new Basketball(); Soccer s = new Soccer(); PingPong p = new PingPong(); // 객체 필드 초기화 b.name = "농구"; s.name = "축구"; p.name = "탁구"; // 부모 타입(업 캐스팅)으로 배열 생성 Sports[] sportsArr = { b, s, p }; // 모든 운동 설명 출력 for (int i = 0; i < sportsArr.length; i++) { Sports tmp = sportsArr[i]; tmp.description(); } } } // 운동 class Sports { /* 1. 상속 관계 및 동일 패키지내에서 해당 필드를 자유로이 쓰게 하세요. */ private String name; public void description() { System.out.printf("[%s]는 여가/경기/체력 단련 등을 위한 신체 운동입니다.\n", name); } } // 농구 class Basketball extends Sports { /* 2. 메소드 오버라이딩(재정의)을 통해 농구을 설명해주세요. */ } // 축구 class Soccer extends Sports { /* 3. 메소드 오버라이딩(재정의)을 통해 축구을 설명해주세요. */ } // 탁구 class PingPong extends Sports { /* 4. 메소드 오버라이딩(재정의)을 통해 탁구을 설명해주세요. */ }

입력

정답이 궁금하다면? 코드를 제출해보세요!