[java] 클래스와 객체의 기능 확장을 위한 인터페이스에 대해 설명해주세요.

Java에서 인터페이스는 클래스와 객체의 기능을 확장하고 활용하기 위한 중요한 개념입니다. 인터페이스는 클래스가 구현해야할 메서드, 상수, 네스트드 타입 등을 정의하는 일종의 계약이라고 할 수 있습니다. 클래스가 인터페이스를 구현한다면, 해당 인터페이스에 정의된 모든 요소를 구현해야 합니다.

인터페이스의 특징

  1. 인터페이스는 다중 상속을 지원합니다. 즉, 한 클래스가 여러 인터페이스를 동시에 구현할 수 있습니다.
  2. 인터페이스는 다형성을 지원합니다. 즉, 인터페이스 타입으로 변수를 선언하고, 그 변수에 다양한 구현체를 할당할 수 있습니다.
  3. 인터페이스는 추상 메서드와 디폴트 메서드를 포함할 수 있습니다. 추상 메서드는 구현을 강제하며, 디폴트 메서드는 기본 구현을 제공합니다.
  4. 인터페이스는 상속과 관련하여 독립적으로 사용될 수 있습니다.

인터페이스의 활용

인터페이스는 클래스와 객체의 기능을 확장하고 다양한 모듈화를 가능하게 합니다. 예를 들어, 여러 클래스에서 공통으로 사용하는 기능을 인터페이스로 정의하고, 해당 인터페이스를 구현한 클래스를 생성하여 사용할 수 있습니다. 이렇게 하면 코드의 재사용성과 유지 보수성이 향상됩니다.

인터페이스는 반드시 구현되어야 하는 메서드를 강제화하기 때문에, 개발자들 사이에서 코드의 일관성을 유지하고 잠재적인 오류를 방지할 수 있습니다. 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() 메서드를 호출하는 것을 볼 수 있습니다.

이 예제는 인터페이스를 사용하여 클래스와 객체의 기능을 확장하고 다형성을 실현하는 간단한 예시입니다. 인터페이스를 통해 여러 클래스가 공통된 기능을 구현할 수 있고, 이를 활용하여 유연하고 확장 가능한 코드를 작성할 수 있습니다.

참고 자료