PIDGEY
PIDGEY's Dev. BLOG
PIDGEY
전체 방문자
오늘
어제
  • 분류 전체보기 (30)
    • 개발 (28)
      • Java (6)
      • Spring Framework (4)
      • Design Pattern (7)
      • CS (0)
      • Algorithm (8)
      • React.JS (2)
    • 일기 (2)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

hELLO · Designed By 정상우.
PIDGEY

PIDGEY's Dev. BLOG

개발/Java

[Java] Default Method

2022. 10. 19. 18:06

자바의 인터페이스를 통해서 구현을 강제하고 다형성을 제공하며 결합도를 절감시키는 효과를 얻을 수 있습니다.
Java 8 이전에는 이런 특징 때문에 필요한 부분만 재정의하고 재사용하기 위해서는 Adapter라는 개념을 구현하여 사용했습니다.

interface MyExample {
	void exam1();
	void exam2();
}

class MyAdapter implements MyExample {
	@Override
	public void exam1() {
		// 재정의 할 부분
	}

	@Override
	public void exam2() {
		// 재정의 하고 싶지 않은 부분
	}
}

class Body extends MyAdapter {
	@Override
	public void exam1() {
		// ...구현부...
	}
    
	// exam2는 따로 재정의 하지 않아도 됩니다 !
}

구현체를 만들어서 재정의하고 싶지 않은 부분도 반드시 재정의 했어야 하죠.
Java 8 부터는 인터페이스의 메소드도 구현부를 가질 수 있게 됐습니다. 당연히 재정의하지 않고 사용할 수도 있죠 !

Default Method

문법은 구현부를 가질 메소드에 default 키워드를 붙여주고 구현부를 작성합니다.
예시 문법은 다음과 같습니다.

interface MyExample {
	void exam1();
	default void exam2() {
		System.out.println("Default Method");
	}
}

이렇게 되면 아까처럼 MyAdapter를 통해서 추상 클래스를 만들고 이를 상속받아서 구현할 필요가 없어지죠 🔥

class Body implements MyExample {
	@Override
	public void exam1() {
		// ...구현부...
	}
    
	// exam2는 따로 재정의 하지 않아도 됩니다 !
}
저작자표시 비영리 동일조건 (새창열림)

'개발 > Java' 카테고리의 다른 글

[SOLID] 객체 지향 설계의 5가지 원칙  (0) 2023.07.04
[Java] Functional Interface와 익명 클래스  (0) 2022.10.19
[Java] JVM? JRE? JDK?  (0) 2022.10.18
객체지향 프로그래밍과 설계  (0) 2022.10.18
[Java] String, StringBuilder, StringBuffer  (0) 2022.10.18
    '개발/Java' 카테고리의 다른 글
    • [SOLID] 객체 지향 설계의 5가지 원칙
    • [Java] Functional Interface와 익명 클래스
    • [Java] JVM? JRE? JDK?
    • 객체지향 프로그래밍과 설계
    PIDGEY
    PIDGEY

    티스토리툴바