본문 바로가기

JAVA

[JAVA] 기초문법 - 인터페이스(3)

java8부터 디폴트메서드, 정적메서드, private메서드가 추가됨.

디폴트메서드: 구현코드를 가지는 메서드 재정의하지 않으면 디폴트 메서드를 사용할 수 있음.

정적메서드: 인스턴스 생성과 상관 없이 사용 할 수 있음.

private 메서드: 인터페이스 내부에서만 사용하기 위해 사용함.

메서드에 구현코드를 삽입 할 수 있지만 그렇다고 해서 인터페이스 인스턴스를 생성하는 것은 불가능 하다.

디폴트 메서드 재정의

디폴트 키워드를 사용한 메서드

calc.description();으로 호출 가능.(해당 인터페이스를 구현하는 클래스의 인스턴스)

디폴트 메서드는 구현하는 클래스에서 재정의 가능하다.

static 메서드

사용법

인터페이스이름.메서드명 으로 호출 가능하다. static메서드는 인스턴스의 생성과 상관 없이 사용 가능 하기 때문.

private 메서드

구현하는 클래스에서 재정의 불가능하다. 인터페이스 내부에서만 사용 가능하다.(디폴트 메서드에서 private메서드를 부르는 방법 등.)

두개의 인터페이스 구현하기

여러개의 인터페이스를 구현할때 각 인터페이스에서 제공하는 디폴트 메서드의 이름이 같다면, 구현하는 클래스에서 해당 이름의 메서드를 재정의해서 사용 해야함.

3개의 order 함수 모두 customer 클래스에서 재정의된 order() 함수가 불린다.

여러 인터페이스를 상속받은 인터페이스를 구현할때는 상속한 인터페이스의 추상메서드도 모두 구현해야한다.

상위클래스

인터페이스

상속과 구현을 동시에 하는 클래스

테스트 코드

상속과 구현을 동시에 사용하여 자료구조 queue를 구현한 모습이다.