-
[Java] 인터페이스 default 메소드Java 2022. 5. 18. 09:49반응형
자바8이 나오면서 인터페이스에 대한 정의가 변경되었다.
기존에 인터페이스는 추상 메소드만 가질 수 있었다.
자바 8 부터는 default, static method를 정의할 수 있도록 변경되었다.
인터페이스가 default로 선언이되면 메소드를 구현 할 수 있고, 이 메소드를 오버라이딩 할 수 있다.
default 사용법
public interface Calculator { public int plue(int i, int j); public int multiple(int i, int j); // 자바 8 부터는 dafult 키워드를 이용하여 메소드 구현이 가능해졌다. 원래는 에러 발생 default int exec(int i, int j){ return i + j ; } }인터페이스가 변경이 되면 그 인터페이스를 구현하는 모든 클래스들이 해당 메소드를 구현해야하는데,
자바 8 에서는 이런 문제를 해결하기 위해 인터페이스에 메소드를 구현 해 놓을 수 있도록 default를 추가하였다.
static 사용법
public interface Calculator { public int plus(int i, int j); public int multiple(int i, int j); default int exec(int i, int j){ return i + j; } public static int exec2(int i, int j){ //static 메소드 return i * j; } } //인터페이스에서 정의한 static메소드는 반드시 인터페이스명.메소드 형식으로 호출해야한다. public class MyCalculatorExam { public static void main(String[] args){ Calculator cal = new MyCalculator(); int value = cal.exec(5, 10); System.out.println(value); int value2 = Calculator.exec2(5, 10); //static메소드 호출 System.out.println(value2); } }interface에서 정의한 static 는 반드시 ' 인터페이스명.메소드() ' 형식으로만 호출해야 한다.
참조변수.메소드() 는 사용 X 인터페이스에서 스테틱한 메소드를 선언 함으로써, 인터페이스를 이용해
간단한 기능을 가지는 유틸리티성 인터페이스를 만들 수 있게 되었다.
반응형'Java' 카테고리의 다른 글
[Java] 헷갈리는 문자열 함수 정리 (substring, split, charAt, indexOf, lastIndexOf) (0) 2022.05.18 [Java] 내부 클래스 (0) 2022.05.18 [Java] 추상클래스 abstract (0) 2022.05.17 [Java] 열거형(Enum) (0) 2022.05.17 [Java] List/Map/Set 차이 (0) 2021.10.18