추상메소드로만 이루어진 클래스
DIP(Dependency Inversion Principle) : 의존성 역전 원칙
객체지향 5대 원칙인 SOLID 중 D
장점
인터페이스가 구현체를 가질 수 있게 되었다. (Java 8부터)
Interface MyInterface {
void method1(); // 구현 X : 추상 메소드
default void sayhello() { // 구현 O
System.out.println("Hello World!");
}
}
Override가 가능하다.
장점
익명 메소드를 사용해서 간결한 인터페이스 인스턴스 생성 방법
@override, public, void, method이름 뻔하기 때문에 생략 후 () → {};
Functional Interface 에서 가능 ⇒ 추상 메소드가 하나이기 때문에!
람다 표현식에서 입력되는 값을 변경없이 바로 사용하는 경우
입력값을 변경하지 말라는 표현방식
개발자의 개입 차단 ⇒ 안정성을 얻을 수 있다.
`(str) → str.length()` → `String::length`
`i → System.out.println(i)` → `System.out::println`
장점 : 간결하게 표현 가능
제네릭은 타입을 특정하지 않고 외부에서 사용자에 의해 지정할 수 있다.
generic은 reference사용 int(x) → Integer(o)
장점