평생 소장! 19,800 원 15,000 원(계좌이체 구매 한정)


기업은행: 206-021800-01-029

예금주: 박세홍


카톡 ID: chaesam(카톡 아이디 검색 후, 문의 주세요!)

이메일: [email protected]

# protected 접근 제한자 #### 접근 제한자 종류? 우리는 이전시간 접근 제한자를 배웠었습니다. ![클라우드스터딩-자바-상속-protected](https://i.imgur.com/4JazPgh.png) #### protected 제한자 이들 중 protected는 상속 관계의 클래스까지 접근을 허용합니다. 따라서 아래 코드의 필드 name은 protected 선언되었으므로, B에서 직접 사용할 수 있습니다. ``` class A { protected String name; } class B extends A { public void printName() { // 부모클래스 A의 필드 name을 출력 System.out.println(name); } } ``` ## 문제 주어진 코드로 농구, 축구, 탁구에 대한 설명을 출력하려 한다. 이를 위해 아래와 같은 클래스 구조를 만들어 놓았다. ![클라우드스터딩-자바-상속-](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. 메소드 오버라이딩(재정의)을 통해 탁구을 설명해주세요. */ }

입력

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