inflearn logo
강의

Course

Instructor

GoF's Design Patterns Learned Through Coding

default 기능이 있는 interface와 추상클래스의 차이

49

Yeseul Lee

1 asked

0

interface에 default 메서드를 사용할 수 있음에 따라 추상 클래스와 동일한 용도로 사용될 수 있는 것처럼 보입니다. 업무 중에는 jdk 6 환경까지 컴파일되야 함을 감안하여 코드를 작성하다보니 해당 기능에 대해 아예 생각해본적이 없는데, 팩토리 강의를 듣던 중 default를 통해 interface가 추상 클래스처럼 사용되는걸 보니, jdk 8 이상의 환경, 특히 9에서는 private까지 지원되면 추상 클래스를 완전히 대체할 수 있는 것처럼 보입니다.

default 기능을 제공하는 interface와 추상 클래스에 차이가 있는지, 현장에서 interface의 default 기능이 적극적으로 사용되는지, 추상 클래스는 더이상 필요없는 것인지요.
기존에 해당 기능을 설명하는 글귀만 봤을 때는 interface를 변경할 때 레거시 코드의 수정없이 변경할 수 있는, 편의성을 위한 기능이라고만 이해하고 넘어갔는데, 적극적으로 사용되는 기능인지 궁금하네요

java 디자인-패턴

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

Yeseul Lee님께서 궁금해하시는 인터페이스의 default 메서드와 추상 클래스의 차이점에 대해 설명드리겠습니다.

인터페이스의 default 메서드는 JDK 8부터 도입되어 기존의 레거시 코드를 수정하지 않고도 인터페이스에 새로운 메서드를 추가할 수 있는 이점이 있습니다. 이는 메서드 구현의 기본 틀을 제공하지만, 상태(멤버 변수)를 가질 수 없다는 점에서 추상 클래스와는 차이가 있습니다.

추상 클래스는 상태(변수)를 가질 수 있으며, 이를 통해 더 복잡한 객체 상태 관리 및 메서드 구현을 제공할 수 있습니다. 따라서 상태 관리가 필요 없을 경우, 인터페이스에 default 메서드를 사용하는 것이 좋습니다.

또한 JDK 9부터는 인터페이스에 private 메서드를 사용할 수 있게 되면서, 인터페이스의 구현이 더욱 유연하게 되었지만, 추상 클래스만큼의 상태 관리는 여전히 어렵습니다.

현장에서는 이러한 default 메서드의 특성을 이해하고, 각 상황에 맞게 적절히 사용되고 있습니다. 추상 클래스가 완전히 대체되지는 않았으며, 서로의 강점에 따라 다르게 활용됩니다.

자세한 설명과 실사용 사례에 대한 포럼 글이나 기존 질문 답변을 참고하시면 더욱 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

많이 사용되는 패턴의 순서를 정한다면 어떤 순서일까요?

0

109

1

@Builder에 대해 사소한 질문

0

52

1

실무 코드에 디자인 패턴 적용 시의 '기준'에 대해 조언을 얻고 싶습니다.

0

42

1

데코레이터 패턴, before 가 O(2^n) 인 이유

0

42

0

혹시 다음강의는 언제쯤..

0

346

1

volatile 사용 이유에 대해서 여쭤보고 싶습니다!

0

612

3

Spring Security 의 ProviderManager (AuthenticationManager) 도 옵저버 패턴을 사용하고 있다고 볼 수 있을까요?

0

390

2

싱글톤 패턴을 깨트리는 방법

0

551

1

코드에 약간 오타가 있는거 같습니다.

0

430

1

싱글톤 (Singleton) 패턴 구현 방법 3 - 2번 퀴즈에 대해 질문이 있습니다.

0

568

2

안녕하세요, 강의 순서 질문드립니다.

0

685

1

스프링 시큐리티 WebSecurityConfigurerAdapter deprecated 대체 코드

0

2429

1

팩토리메소드 = 추상팩토리?

2

922

1

중재자 패턴에 관하여~

0

509

1

undo 메소드 작업중에서

1

365

1

익명클래스로 객체 생성시 의문점

0

583

1

mediator패턴에서 객체끼리 순환참조는 어떻게 해결해야할까요

0

479

1

객체간에 this를 넘기는 부분에 관련해 질문이 있습니다..

1

366

1

전략 패턴과 상태 패턴에 관련해서 질문이 있습니다.

0

281

1

플라이웨이트 패턴 3부에서 HashMap 동시성 질문입니다.

0

254

1

enum 이 이른 초기화 방법이 아니라는 것은,

0

501

1

해당 코드가 C# 에선 접근 관련 컴파일 에러가 뜹니다.

0

430

1

설계관련 궁금증이 있습니다.

0

324

0

설계관련 궁금증이 있습니다.

0

232

0