커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
강의 3-18 예제 코드
Java 문법 종합반 v0
3주차
북마크
유*희
댓글
3
추천
0
조회수
15
조회수
15
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


강의 3-18 에서 인터페이스의 다형성 부분에서 예제 코드 설명하는 부분이 이해가 잘 안됩니다


코드가 길어서 메인클래스에 이해안되는 부분만 올려 보겠습니다!

  MultiRemoteController samsung = mrc.getTV(new SamsungTv("Samsung"));//1번
          samsung.turnOnOff();//2번
  
          SamsungTv samsungTv = (SamsungTv) samsung;//3번
          samsungTv.turnOnOff();
 

1번: 아래와 같이 이해하였습니다.

우변: MultiRemoteController의 getTV는 인풋이 Tv tv인데 여기서는 new SamsungTv("Samsung")를 넣었음.  즉, 자동형변환(Tv tv = new SamsungTv("Samsung")) 한 것.
좌변: samsung이 우변에서 리턴된 SamsungTv에서  MultiRemoteController로 자동형변환 되었다.

2번: MultiRemoteController가 된 samsung으로 삼성티비를 켰습니다.

3번: 2번에서 킬 때 samsung을 MultiRemoteController로 형변환을 해서 켰으니까, 끌때도 그대로 MultiRemoteController로 끄면되는 것 아닌가요? 왜 MultiRemoteController이던 samsung을 SamsungTv로 강제형변환 하여 끄는건지 모르겠습니다..!








public class Main {
    public static void main(String[] args) {

        // LG TV 구현체를 조작
        MultiRemoteController mrc = new LgTv("LG");
        mrc.turnOnOff();
        mrc.volumeUp();
        mrc.channelDown();
        mrc.channelUp();
        mrc.turnOnOff();

        // 조작 대상을 Samsung TV로 교체
        System.out.println("\n<Samsung TV로 교체>");
        mrc = new SamsungTv("Samsung");
        mrc.turnOnOff();
        mrc.channelUp();
        mrc.volumeDown();
        mrc.volumeUp();
        mrc.turnOnOff();

        // 매개변수, 반환타입 다형성 체크
        System.out.println("\n<매개변수, 반환타입 다형성 체크>");

        MultiRemoteController samsung = mrc.getTV(new SamsungTv("Samsung"));
        samsung.turnOnOff();

        SamsungTv samsungTv = (SamsungTv) samsung;
        samsungTv.turnOnOff();


        System.out.println();
        MultiRemoteController lg = mrc.getTV(new LgTv("LG"));
        lg.turnOnOff();

        LgTv lgTv = (LgTv) lg;
        lgTv.turnOnOff();

    }
}

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴