자바 8 버전이 되면서 인터페이스에서도 변경이 생겼습니다. 대표적으로 눈에 띄는 것이 기본 메서드 지원(default method)과 static 메서드 지원이 있습니다. 이번 문서에서는 기본 문서와 static 메서드를 지원함으로써 가능한 것들에 대해 알아보려고 합니다. 🧑💻상속, 구현에 용이한 기본 메서드 public interface Foo { void sayHelloTo(String name); } sayHelloTo라는 추상 메서드를 가진 Foo 인터페이스가 있습니다. 그리고 이 클래스를 여럭 곳에서 상속받아, 이를 구현하고 있다고 생각해봅시다. 그럼 자바 8이전에는 다음과 같이 사용해야 했을 것입니다. public class FooImpl implements Foo { @Override vo..
백엔드 개발자이고 면접을 준비하고 있거나, 면접을 봐본 사람이라면 이 질문에 대해서 고민 해봤을 것이다. 언뜻 보면 둘이 비슷하게 생겼다. 외부적으로는 선언된 방식이 interface냐 abstract class냐의 차이가 있지만 말이다. 그럼 각각에 대해서 알아보도록 하자. 🧐Interface 먼저 인터페이스 코드를 보자. public interface Dog { void bark(); void walk(); } Dog라는 interface에는 두가지 메서드가 있다. 하나는 bark(), 하나는 walk() 각각의 메서드는 추상 메서드인가? 앞에 abstract가 없는데도 추상 메서드인가? 그렇다. interface가 가지고 있는 메서드는 모두 추상 메서드이다. 그럼 정말 모두 추상 메서드일까? 다음의..