관리 메뉴

제뉴어리의 모든것

Interface 내의 default, static 메소드 본문

JAVA

Interface 내의 default, static 메소드

제뉴어리맨 2021. 1. 16. 09:44

JAVA 8 부터 Interface 내에 defualt 메소드, static 메소드라는 것이 생겨서

Interface내에 함수를 구현할 수 있게 되었다.

 

그런데 왜? 

함수의 틀만 잡아 놓기 위해 존재하던 Interface에 함수를 구현 할 수 있게 만들었을까.

default 메소드는 하위호완성과 유연성을 위해서라는데..

하위호완성과 유연성을 위함이라는 이유를 개인적인 견해로 풀어보자면

만약 java7에서 이미 배포된 public interface Resizable {} 라는 Interface가 있고 

현재 내가 진행중인 프로젝트에서는 해당 Interface를 상속받아 중요 기능들을 구현해 놓은 핵심 클래스가 있다치자

그런데 java8은 Resizable Interface에 AddSize()라는 추상 메소드가 추가 됬다치면 

구현해놓은 핵심클래스에 AddSize라는 추상 메소드를 구현 해줘야 하는 번거로움이 있다

그럴 경우에 번거로움을 해소하기 위해 AddSize라는 메소드를 아예 Interface내에 구현해 놓아버리는것이다.

그리고 인터페이스의 가이드라인을 위해? 혹은 이미 존재하는 추상 메소드의 변경이 이루어졌을 경우 명시적으로 알기위해? 

이러한 여러가지 이유로 Default 메소드가 생겼다고 알아두고 있고 추후 공부가 더 필요하다.

 

그리고 static 메소드는 보다 직관성을 높이기 위해?

라는 개인적인 견해가 있다.

예를 들어

특정 Interface에서 꼭 필요할것이라 생각되는 Util 기능의 static 메소드를 정의 해두고 해당 Interface를 상속받은 클래스들을 위해 사용하기 위해?

 

[ 정리 ]

  • interface의 default 메소드

- interface에서도 메소드 구현이 가능하다.

- 참조 변수로 함수를 호출할 수 있다.

- implements한 클래스에서 재정의가 가능하다.

 

 

  • interface의 static 메소드 

- interface에서 메소드 구현이 가능하다.

- 반드시 클래스 명으로 메소드를 호출해야 한다.

- 재정의 불가능!

좋아요5

공유하기

글 요소

구독하기

 

 



출처: https://dahyeee.tistory.com/entry/JAVA-interface-default-static메소드 []

 

 

 

 

 

 

[JAVA] interface (default, static메소드) (tistory.com)

자바8이후 인터페이스의 변경점 2가지와 변경한 이유(default method, static method) (tistory.com)