열심히 끝까지

27강 추상클래스/인터페이스/내부클래스 - 인터페이스 본문

멘토씨리즈 JAVA

27강 추상클래스/인터페이스/내부클래스 - 인터페이스

노유림 2022. 5. 2. 19:19

27-1 ) 인터페이스
       (1) 인터페이스의 정의
               인터페이스(interface)란?
                 : inter(사이의) + face(마주하다)의 합성어로 물체들 사이에서
                   상호작용 할 수 있도록 하는 매개 역할

                 : 클래스 - 설계도 
                   인터페이스 - 규격
             
                  ex) 핸드폰에는 필수적으로 들어가야 할 기능
                       -> 그 것을 인터페이스로 만들어 놓는다면
                           앞으로 만들어질 폰에 다 들어가 있기 한다.

       (2) 인터페이스의 문법
               인터페이스의 멤버
                   - 상수 : final 타입 변수명 = 값;
                   - 추상 메서드 : abstract 리턴 타입 메서드명();

               인터페이스 구현 방법
                   interface 인터페이스명{
                              필드
                   };

               클래스로 인터페이스 구현
                   interface 인터페이스명{

                   }
                   class 클래스명 implements 인터페이스명{
                              추상 메서드 구현
                   }

                 < 실습 > Interface1



                 *인터페이스 주의할 점!
                 1. 인터페이스 내 일반 메서드 불가
                 2. 인터페이스 내 변수 불가(상수만 가능)
                 3. 인터페이스로 객체 생성 불가
                 4. 인터페이스 내 멤버 메서드 abstract 키워드 생략 가능
                 5. 인터페이스 내 멤버 변수 final 키워드 생략 가능

       (3) 인터페이스의 활용
                 < 실습 > Interface3
                 여행 가이드 객체를 만들고 그 객체는 레저, 관광, 음식투어를
                 진행할 수 있도록 구현하기



                 < 실습 > interface3
                 TourGuide 클래스가 만약 KoreaTour 클래스가 아닌
                 JapanTour 클래스로 변경이 되어야 한다면?
                 -> 인터페이스를 사용하여 업캐스팅을 하면,
                      TourGuide와 KoreaTour 클래스 간 관계가 느슨해지므로
                      코드의 수정이 간편함




       (4) 인터페이스의 다형성
                 1) 인터페이스의 다중구현
            <구조>
            interface 인터페이스1{ }
            interface 인터페이스2{ }
            interface 인터페이스3{ }

                   class 클래스명 implements 인터페이스1, 인터페이스2, 인터페이스3 ... {
                   //                          모든 추상메서드 구현       
  
                   }

                <실습> Interface4
                인터페이스를 사용하면 MyCellPhone 클래스가 여러 기능으로 정의된
                인터페이스를 다중 구현