
자바 기본 문법 – 인터페이스 – 3 – 인터페이스의 default 메서드와 static 메서드
안녕하세요! 오늘은 자바 기본 문법 시리즈의 세 번째 주제로, “인터페이스의 default 메서드와 static 메서드”에 대해 알아보도록 하겠습니다. 인터페이스는 자바에서 다중 상속을 지원하지 않는 대신, 다른 클래스들이 공통으로 사용하는 메서드의 규약을 정의하는 역할을 합니다. 그리고 자바 8부터는 인터페이스에 default 메서드와 static 메서드를 추가할 수 있게 되었습니다. 이 두 가지 메서드는 인터페이스의 유연성을 향상시키고, 기존 코드 호환성을 유지하는 데 도움을 줍니다.
1. default 메서드 (Default Methods)
인터페이스의 default 메서드는 기본적으로 구현을 가지는 메서드입니다. 이 메서드는 인터페이스를 구현하는 클래스에서 재정의하지 않아도 기본 구현이 사용됩니다. 이를 통해 기존에 인터페이스를 구현하던 클래스들에게 영향을 주지 않고 새로운 기능을 추가할 수 있습니다.
예시:
public interface Drawable {
void draw();
default void display() {
System.out.println("이미지를 표시합니다.");
}
}
위의 예시에서 Drawable
인터페이스는 draw
메서드를 정의하고 있습니다. 추가로 display
메서드는 default 메서드로 정의되어 있습니다. 이제 Drawable
인터페이스를 구현하는 클래스에서는 display
메서드를 구현하지 않아도 기본 구현이 사용됩니다.
예시:
public class Rectangle implements Drawable {
public void draw() {
System.out.println("사각형을 그립니다.");
}
}
Rectangle
클래스는 Drawable
인터페이스를 구현하고 있으며, draw
메서드를 재정의하였습니다. 하지만 display
메서드는 재정의하지 않았으므로, display
메서드는 기본 구현이 사용됩니다.
2. static 메서드 (Static Methods)
인터페이스의 static 메서드는 인터페이스와 관련된 유틸리티 메서드를 제공하는 데 사용됩니다. 이러한 메서드는 인터페이스 이름으로 직접 호출할 수 있으며, 인터페이스를 구현하는 클래스에서 재정의할 필요가 없습니다.
예시:
public interface Calculator {
static int add(int a, int b) {
return a + b;
}
}
위의 예시에서 Calculator
인터페이스는 add
라는 static 메서드를 정의하고 있습니다. 이제 Calculator
인터페이스를 구현하는 클래스에서는 add
메서드를 구현하지 않아도 직접 호출할 수 있습니다.
예시:
public class BasicCalculator implements Calculator {
// 다른 메서드 구현...
public static void main(String[] args) {
int result = Calculator.add(3, 5);
System.out.println("두 수의 합: " + result);
}
}
BasicCalculator
클래스에서는 add
메서드를 구현하지 않았지만, 인터페이스의 static 메서드를 직접 호출하여 사용할 수 있습니다. 위의 예시에서는 3과 5를 더한 결과인 8이 출력될 것입니다.
주의해야 할 점
- default 메서드와 static 메서드는 인터페이스 내부에서만 정의할 수 있습니다.
- default 메서드와 static 메서드는 인터페이스를 구현하는 클래스에서 재정의하지 않아도 됩니다.
- default 메서드와 static 메서드는 기존 인터페이스를 수정하지 않고도 새로운 기능을 추가할 수 있는 장점을 가지고 있습니다.
- 인터페이스 내부에서 this 키워드를 사용할 수 없습니다. 인터페이스의 default 메서드나 static 메서드는 인스턴스 메서드가 아니기 때문입니다.
이제 자바의 인터페이스에 대한 default 메서드와 static 메서드에 대해 살펴보았습니다. default 메서드는 인터페이스를 구현하는 클래스에서 재정의하지 않아도 기본 구현이 사용되며, static 메서드는 인터페이스 이름으로 직접 호출할 수 있습니다. 이러한 기능들은 자바의 인터페이스를 더욱 유연하고 확장 가능하게 만들어주는 도구로 활용될 수 있습니다.
자바 기본 문법 – 인터페이스 – 3 – 인터페이스의 default 메서드와 static 메서드에 대한 내용을 정리해보았습니다. 새로운 기능을 추가하거나 유틸리티 메서드를 제공할 때 이러한 기능들을 적절히 활용해보세요. 이를 통해 코드의 재사용성을 높이고, 작성한 코드가 더욱 유연하고 확장 가능하도록 만들 수 있습니다.
앞으로 자바 공부를 하시는 분들에게 도움이 되기를 바랍니다. 화이팅!