본문 바로가기
IT/자바

자바 정리 - 인터페이스

by 김보리 2021. 11. 30.
728x90
반응형

인터페이스

  • 객체의 사용 방법을 정의한 타입
  • 개발 코드와 객체가 서로 통신하는 접점역할을 함
  • 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출
  • 구성 멤버 : 상수 필드, 추상 메소드

 

인터페이스는 필드 선언 불가 (상수 필드 가능)

 

상수 필드 : 인터페이스의 상수 필드는 기본적으로 public, static, final 특성을 갖음

      관례적으로 필드 이름은 모두 대문자로 작성, 선언 시 초기값을 대입

 

인터페이스도 일반 동작을 정의하는 메소드(default 메소드) 가능

ex) default int getVolume() { }

 

필드 : 객체 선언 시 같거나, 상위 클래스

 

추상 메소드 :  인터페이스에 선언된 메소드는 public abstract가 생략되고 메소드 선언부만 있음

          구현 클래스는 반드시 추상 메소드를 재정의해야 함

 

추상 메소드 선언

  • 인터페이스 통해 호출되는 메소드는 최종적으로 객체에서 실행
  • 인터페이스의 메소드는 실행 블록 필요 없는 추상 메소드로 선언
  • 추상 메소드는 리턴 타입, 메소드 이름, 매개 변수만 기술되고 중괄호 { }를 붙이지 않는 메소드
  • 인터페이스에 선언된 추상 메소드는 모두 public abstract의 특성을 갖기 때문에
    public abstract를 생략하더라도 컴파일 과정에서 자동으로 붙음

 

extends : 확장

 

implements : 동작하는 메소드가 없기 때문에 선언된 메소드를 반드시 재정의 해야함

        구현 클래스는 어떤 인터페이스로 사용 가능한지(어떤 인터페이스를 구현하고 있는지)를

          기술하기 위해 클래스 선언 시 implements 키워드 사용

 

방법 1. public class Television implements RemoteControl 입력 후 에러 부분에서
            Add unimplemented methods 클릭

방법 2. 클래스 생성 시 클래스명 작성 후 Interfaces : add 클릭 후 interface명 검색 후 finish

 

인터페이스 사용 : 클래스 선언할 때 인터페이스는 필드, 생성자 또는 메소드의 매개 변수, 생성자 또는

    메소드의 로컬 변수로 선언될 수 있음

  1. 인터페이스가 필드 타입으로 사용될 경우 : 필드에 구현 객체를 대입
  2. 인터페이스가 생성자의 매개 변수 타입으로 사용될 경우 : new 연산자로 객체를 생성할 때 구현 객체를 생성자의 매개값으로 대입할 수 있음
  3. 인터페이스가 로컬 변수 타입으로 사용될 경우 : 변수에 구현 객체를 대입할 수 있음
  4. 인터페이스가 메소드의 매개 변수 타입으로 사용될 경우 : 메소드 호출 시 구현 객체를 매개값으로 대입할 수 있음

 

대입된 후에는 재정의된 구현 객체의 메소드를 호출할 수 있음





인터페이스 타입 변환과 다형성

 

자동 타입 변환 : 구현 객체가 인터페이스 변수에 대입되는 것

 

다형성 : 상속은 같은 종류의 하위 클래스를 만드는 기술이고, 인터페이스는 사용 방법이 동일한 클래스를 만드는 기술이라는 개념상의 차이는 있으나, 둘 다 다형성을 구현하는 방법은 비슷함. 모두 재정의와 타입 변환 기능을 제공

 

강제 타입 변환 : 인터페이스에 대입된 구현 객체를 다시 원래 구현 클래스 타입으로 변환하는 것

 

instanceof : 강제 타입

 

728x90
반응형

'IT > 자바' 카테고리의 다른 글

자바 정리 - 익명객체, 예외처리  (0) 2021.11.30
자바 정리 - 중첩클래스(nested class)  (0) 2021.11.30
자바 정리 - 추상 클래스  (0) 2021.11.30
자바 정리 - 타입 변환과 다형성  (0) 2021.11.30
자바 정리 - 상속  (0) 2021.11.30

댓글