2022. 10. 29. 21:36ㆍJava
함수형 인터페이스란 무엇인가?
함수형 인터페이스는 인터페이스에 오직 하나의 추상 메서드만을 가지고 있는 것을 말한다. 함수형 인터페이스는 Object 메서드들을 제외한, 오직 하나의 추상 메서드를 가진다. 추상 메서드를 제외한 static, default 메소드들은 존재할 수 있다.
인터페이스 내에서 static 메서드는 오버라이딩이 불가능하지만 default 메서드는 가능하다.
※ default 메소드란 기존 접근제어자에서 아무것도 쓰지 않은 것을 말하지만 인터페이스에서는 default 라는 제어자를 명시해주어야하며 해당 접근제어자를 가진 메서드를 이용하면 인터페이스에서도 구현을 할 수 있게 된다
기존 개념과 다른 방식으로 하게 된 이유는 인터페이스에 새로운 추상 메서드가 들어오게 되면 해당 인터페이스를 이용하는 프로그램들은 오버라이딩을 강제로 해야하게 되므로 온갖 문제가 생길 것이다. 그래서 static, default 메서드들을 넣을 수 있게 기존 개념과는 다른 방식을 선택한 것이다.
함수형 인터페이스는 또한 객체 생성을 이용하여서 사용이 가능하다.
기존 인터페이스는 추상 클래스와 같은 개념이기 때문에 객체 생성이 불가능하지만 함수형 인터페이스는 객체 생성을 한 후에 기존의 클래스의 함수 접근처럼 사용이 가능하다.
@FuntionalInterface // 해당 annotation 이 있다면 함수형 인터페이스의 형식에 맞는지 확인하여 준다
interface barkable{
void bark(String bark);
}
public class FuntionalInterfaceExample implements barkable{
public void bark(String bark){
System.out.println(bark);
}
public void main(String[] args){
FuntionalInterfaceExample fi = new FuntionalInterfaceExample();
fi.bark("Woo");
}
}
함수형 인터페이스를 사용하는 이유는?
함수형 인터페이스를 이용하는 이유는 객체화해서 람다식 표현을 사용할 수 있기 때문이다. 오직 하나의 함수만 있기 때문에 이용에 혼란이 없다. 또한 객체화해서 쓸 수 있게 되면 많은 메서드 구현을 하나의 클래스에 가득 채울 필요가 없어지므로 좋다. 클래스와 인터페이스 개념간의 절충점이라고 볼 수 있을 것 같다.
'Java' 카테고리의 다른 글
java.util.ConcurrentModificationException 에러 (0) | 2022.11.09 |
---|---|
자바 람다 (0) | 2022.10.31 |
Java 상속 (0) | 2022.08.20 |