Java에서 인터페이스는 클래스와 객체의 기능을 확장하고 활용하기 위한 중요한 개념입니다. 인터페이스는 클래스가 구현해야할 메서드, 상수, 네스트드 타입 등을 정의하는 일종의 계약이라고 할 수 있습니다. 클래스가 인터페이스를 구현한다면, 해당 인터페이스에 정의된 모든 요소를 구현해야 합니다.
인터페이스의 특징
- 인터페이스는 다중 상속을 지원합니다. 즉, 한 클래스가 여러 인터페이스를 동시에 구현할 수 있습니다.
- 인터페이스는 다형성을 지원합니다. 즉, 인터페이스 타입으로 변수를 선언하고, 그 변수에 다양한 구현체를 할당할 수 있습니다.
- 인터페이스는 추상 메서드와 디폴트 메서드를 포함할 수 있습니다. 추상 메서드는 구현을 강제하며, 디폴트 메서드는 기본 구현을 제공합니다.
- 인터페이스는 상속과 관련하여 독립적으로 사용될 수 있습니다.
인터페이스의 활용
인터페이스는 클래스와 객체의 기능을 확장하고 다양한 모듈화를 가능하게 합니다. 예를 들어, 여러 클래스에서 공통으로 사용하는 기능을 인터페이스로 정의하고, 해당 인터페이스를 구현한 클래스를 생성하여 사용할 수 있습니다. 이렇게 하면 코드의 재사용성과 유지 보수성이 향상됩니다.
인터페이스는 반드시 구현되어야 하는 메서드를 강제화하기 때문에, 개발자들 사이에서 코드의 일관성을 유지하고 잠재적인 오류를 방지할 수 있습니다. Java의 Collection 프레임워크는 인터페이스를 활용하여 다양한 자료구조를 구현하고 사용할 수 있도록 하고 있습니다.
인터페이스 예제
다음은 인터페이스를 사용하는 Java의 예제 코드입니다.
// 인터페이스 정의
interface Printable {
void print();
}
// 인터페이스 구현
class Printer implements Printable {
public void print() {
System.out.println("Printing...");
}
}
// 메인 메서드
public class Main {
public static void main(String[] args) {
Printable printer = new Printer();
printer.print();
}
}
위 예제에서는 Printable 인터페이스를 정의하고, Printer 클래스에서 해당 인터페이스를 구현했습니다. 메인 메서드에서는 Printable 인터페이스 타입의 변수에 Printer 객체를 할당하여, print() 메서드를 호출하는 것을 볼 수 있습니다.
이 예제는 인터페이스를 사용하여 클래스와 객체의 기능을 확장하고 다형성을 실현하는 간단한 예시입니다. 인터페이스를 통해 여러 클래스가 공통된 기능을 구현할 수 있고, 이를 활용하여 유연하고 확장 가능한 코드를 작성할 수 있습니다.