Default Method

서현서현·2023년 8월 6일
0

JAVA

목록 보기
21/27

인터페이스를 공부하던중

오직 추상메소드와 상수만을 멤버로 가질 수 있다. 즉 모든 멤버변수는 public static final이고, 모든 메소드는 public abstract이다
(단, static 메소드와 default 메소드는 예외이다)

라는 내용을 발견하였다. 인터페이스의 멤버변수가 추상클래스와 상수만 가능하다 까지는 그동안 여러가지 실습을 통해 알고있었으나, default메소드는 난생 처음 들었다...!!

void 먹기() // 추상클래스
static void 말하기() // static 메소드
default void 노래부르기() // default 메소드

위와같이 세가지 선언이 가능하다는 얘기이다.

자바8부터 생긴 기능, default는 무엇일까?

Default Method

예를들어 내가 아주 유우명한 인터페이스를 만들었다고 하자.
세상의 모든 리모콘을 위해 리모콘의 기능을 선언한 인터페이스이고, 대 히트를 쳐서 많은 사람들이 이를 사용하고있다.

그런데 만약 내가 이 인터페이스에 내용을 추가한다면? 요즘 나오는 리모콘엔 모두 음성인식이 달려있어서 소리인식하기() 메소드를 추가한다면?

이전에 이 인터페이스를 사용하던 모든 사용자들의 클래스에 오류가 뜨게된다. 즉, 완전 빌런이 되어버리는것이다

따라서 이를 해결하기 위해 default Method가 사용된다고 보면 된다. (static 메소드도 해결방법중 하나이다.)

정리하자면, 기존에 존재하던 인터페이스를 이용하여 클래스를 만들어 사용하고 있는데, 인터페이스를 보완하는 과정에서 추가적으로 구현해야 할 혹은 필수적으로 존재해야 할 메소드가 있다면, 이미 이 인터페이스를 구현한 클래스와의 호환성이 떨어지게 된다. 이러한경우 default Method를 추가하게 되면 하위호환성은 유지되고 인터페이스의 보완을 진행할 수 있다.


(CF) 이후 이 인터페이스를 구현하는 클래스에서는 default Method를 재정의 할 수 있다.
(CF) static 메소드의 경우엔 특정객체에 속하는 메소드가 아니므로 호출시 인터페이스이름.메소드명 형식으로 호출한다.

0개의 댓글