목표
자바의 인터페이스에 대해 학습하세요.
학습할 것 (필수)
- 인터페이스 정의하는 방법
- 인터페이스 구현하는 방법
- 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법
- 인터페이스 상속
- 인터페이스의 기본 메소드 (Default Method), 자바 8
- 인터페이스의 static 메소드, 자바 8
- 인터페이스의 private 메소드, 자바 9
인터페이스 정의하는 방법
public interface 인터페이스명 { }
인터페이스 구현하는 방법
public class 클래스명 implements 인터페이스명 { } interface는 extends 와 implements 갯수에 대한 제한이 없다.
인터페이스 레퍼런스를 통해 구현체를 사용하는 방법
인터페이스명 인스턴스명 = new 인터페이스명(); **또한 메소드가 한개일 경우 익명내부 클래스로도 구현할수 있다.** 인터페이스명 인스턴스명 = new 인스턴스명() { @Override 메소드관련정보 };
인터페이스의 상속
public interface 인터페이스명 extends 인터페이스명 { }
- 상위 인터페이스를 상속받아 하위 인터페이스에서 사용할수 있다.
- 상위 인터페이스의 구현을 extends로 하위인터페이스에서 default method로 할수 있다.
인터페이스의 기본 메소드 ( Default Method ) java 8
-
Java 8 부터 추가된 Default Method는
-
메소드의 내부구현이 불가능했던 interface가 내부구현도 가능하도록 변경되었다.
-
상속을 통한 인터페이스끼리의 구현도 가능해졌다.
-
상위 인터페이스에서 작성한 메소드를 하위 인터페이스에서 상속받아 default method로 구현하는것이 그것이다.
-
여러 인터페이스에서의 디폴트 메소드가 동일한 경우에는 구현클래스에서 디폴트 메소드를 오버라이딩 해줘야 한다.
-
디폴트 메소드와 조상 클래스의 메소드간에 동일하는 경우에는 조상 클래스의 메소드가 상속되고 디폴트 메소드는 무시된다.
인터페이스의 스태틱 메소드 ( Static Method ) java 8
- Java 8부터 추가된 static 메소드
- static 메소드를 선언하여 메소드의 내부를 구현할수 있게 되었다.
- 기존클래스처럼 class이름 메소드로 호출하는것이 아닌 인터페이스.이름으로 호출
- 재정의는 불가능하다.
- 하위 인터페이스가 상위의 스태틱 메소드를 상속하지 않는다.
참고
https://atoz-develop.tistory.com/entry/JAVA-8-interface-default-키워드와-static-메소드
https://dahyeee.tistory.com/entry/JAVA-interface-default-static메소드
https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.1
자바의정석
'백선생님 온라인스터디' 카테고리의 다른 글
11주차 Enum (0) | 2021.01.30 |
---|---|
9주차 - 예외 처리 (0) | 2021.01.19 |
7주차 - 패키지 (0) | 2021.01.12 |
6주차 상속 (0) | 2021.01.10 |
4주차 - 제어문 (0) | 2021.01.09 |