본문 바로가기

[TIL] 인터페이스

인포꿀팁 발행일 : 2020-08-11

인터페이스 Interface 란?

인터페이스는 미완성된 설계도와 같은 개념
추상 메서드만 있는 껍데기
  • 클래스를 위한 템플릿으로서의 기능을 수행하는 추상 클래스의 한 종류이다.
  • 인터페이스는 interface 라는 키워드를 사용하여 선언하며, 메소드 시그너처와 상수 선언만을 포함할 수 있다.(static, final 모두 선언되는 변수 선언) => java 8 미만에서만
  • 자바 8 미만의 인터페이스는 모든 메소드가 선언만 있고 정의가 없는 추상메소드만 선언 가능
  • 자바 8 부터는 default와 static 메소드는 interface 정의에 구현체를 가질 수 있다.
  • 클래스에서 인터페이스를 구현하기 위해서는 implements 키워드 사용한다.
  • 인터페이스는 다중 상속이 가능하다. 콤마 ","로 구분하여 여러개의 인터페이스를 상속할 수 있다.
  • 인터페이스 끼리 상속할 경우 extends 키워드 사용한다.

특징

  • 클래스간 결합도를 낮출 수 있다.
  • 표준화가 가능하다
  • 개발시간 단축 가능하다.

 

 

인터페이스 멤버

상수필드

  • 인터페이스는 상수 필드만 선언 가능하며 런타임 시 값을 변경할 수 없다.
  • 상수 필드는 public final static만 가능하며 생략할 수 있지만 생략해도 자동으로 컴파일된다.
  • static{} 초기화 블록으로 초기화가 불가능하며 상수 필드를 선언하며 초기화해야한다.

추상메소드

  • 자바8미안의 인터페이스는 모든 메소드가 선언만 있고 정의가 없는 추상 메소드만 선언이 가능하다.
  • 접근제어자는 생략이 가능하지만 public만 가능하다.
  • 추상 메소드에 public abstract 키워드를 붙이지 않아도 자동으로 생성된다.
  • 인터페이스를 구현한 클래스는 추상 클래스가 아닌 경우 인터페이스의 모든 추상 메소드를 재정의해야 한다.

디폴트 메소드

  • 자바 8부터 사용 가능
  • 디폴트 메소드는 인터페이스에 선언되지만, 정의가 된 메소드로 구현클래스에서 재정의가 가능하다.
  • 디폴트 메소드는 public 를 생략해도 public 특성을 갖는다.
  • 디폴트 메소드를 사용하기 위해서는 반드시 인터페이스를 구현한 클래스의 객체를 생성한 후 에만 사용 가능
  • 인터페이스를 상속 받은 인터페이스는 디폴트 메소드를 재정의하거나 다시 추상 메소드로 선언 할 수 있다.

static 메소드

  • 자바8부터 가능
  • 디폴트 메소드와 달리 객체가 없어도 인터페이스만으로 호출이 가능하다.
  • static 메소드는 public을 생략해도 public의 특성을 갖는다.

'Language > JAVA' 카테고리의 다른 글

[TIL] 예외처리  (3) 2020.08.12
[TIL] 중첩 클래스  (0) 2020.08.11
[TIL] 추상 클래스  (0) 2020.08.10
[TIL] 상속  (0) 2020.08.10
[TIL] 자바의 기본 API 클래스 - Date 클래스  (0) 2020.08.10

댓글