JAVA 인터페이스(Interface)

suebeen·2021년 8월 7일
0

Java

목록 보기
3/7
post-thumbnail

Interface란?

추상메소드로만 이루어진 클래스

  1. 구현하도록 강제한다!
  2. 다형성을 제공한다!
  3. 결합도를 낮춘다!
  • DIP(Dependency Inversion Principle) : 의존성 역전 원칙

    객체지향 5대 원칙인 SOLID 중 D

    장점

    1. 하위 레벨에서의 구현이 변경되더라도 변경이 상위로 전파되지 않는다.
    2. 추상과 상세를 격리시키므로 유지보수가 쉬워진다.
    3. 변경에 강하다 = 재사용 가능하다

Default Method

인터페이스가 구현체를 가질 수 있게 되었다. (Java 8부터)

Interface MyInterface {
	void method1(); // 구현 X : 추상 메소드
	
	default void sayhello() { // 구현 O
		System.out.println("Hello World!");
	}
}

Override가 가능하다.

장점

  1. Adapter 역할 가능
  2. 인터페이스 추가만으로 기능 확장
  3. static 메소드를 가질 수 있게 되었다 = 함수 제공자가 되었다

Functional Interface

  • 추상메소드가 오직 하나만 존재하는 Interface, default 나 static 메소드가 있어도 상관 X
  • @FunctionalInterface을 달아준다.
  • FunctionalInterface에 있는 추상메소드 = 함수
  • 익명클래스를 사용해서 Interface의 인스턴스를 생성하고 구현을 바로 정의할 수 있다.

Lambda 표현식

  • 익명 메소드를 사용해서 간결한 인터페이스 인스턴스 생성 방법

  • @override, public, void, method이름 뻔하기 때문에 생략 후 () → {};

  • Functional Interface 에서 가능 ⇒ 추상 메소드가 하나이기 때문에!

  • 람다 표현식에서 입력되는 값을 변경없이 바로 사용하는 경우
    입력값을 변경하지 말라는 표현방식
    개발자의 개입 차단 ⇒ 안정성을 얻을 수 있다.

    `(str) → str.length()` → `String::length`
    `i → System.out.println(i)` → `System.out::println`

장점 : 간결하게 표현 가능

Generic

제네릭은 타입을 특정하지 않고 외부에서 사용자에 의해 지정할 수 있다.

generic은 reference사용 int(x) → Integer(o)

장점

  1. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입 체크할 필요 X
  2. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다.

0개의 댓글

관련 채용 정보