JAVA/포스팅

자바 인터페이스 (Interface)

짜집퍼박사(짜박) 2023. 11. 5. 11:34

자바에서 인터페이스 (Interface)는 객체 지향 프로그래밍 (OOP)에서 중요한 개념 중 하나로, 추상화의 한 형태로서 클래스의 설계와 구현을 강화하는 도구입니다. 인터페이스는 메서드의 시그니처를 정의하고, 클래스에서 해당 메서드를 구체적으로 구현하도록 강제하는 역할을 합니다. 다음은 자바에서의 인터페이스에 대한 주요 개념과 원리를 설명합니다.

 

1. 인터페이스 정의

인터페이스는 interface 키워드를 사용하여 정의됩니다. 인터페이스는 추상 메서드, 상수, 정적 메서드, 디폴트 메서드 등을 포함할 수 있습니다.

interface Drawable {
    // 추상 메서드
    void draw();

    // 상수 (public static final로 암시적으로 정의됨)
    int MAX_SIZE = 100;
}

 

2. 추상 메서드 (Abstract Method)

인터페이스 내에 정의된 메서드는 기본적으로 추상 메서드로 취급됩니다. 추상 메서드는 메서드의 시그니처만을 정의하고 구현 내용은 제공하지 않습니다.

 

3. 인터페이스 구현

클래스가 인터페이스를 구현하려면 implements 키워드를 사용하여 인터페이스를 구현하고, 인터페이스의 모든 추상 메서드를 반드시 구현해야 합니다.

class Circle implements Drawable {
    // 인터페이스의 추상 메서드 구현
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}

 

4. 다중 상속

클래스는 여러 인터페이스를 구현할 수 있으므로, 다중 상속과 유사한 역할을 합니다. 이를 통해 클래스는 다양한 동작 및 기능을 가질 수 있습니다.

class Rectangle implements Drawable, Resizable {
    // 인터페이스의 추상 메서드 구현
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }

    // Resizable 인터페이스의 추상 메서드 구현
    @Override
    public void resize(int percent) {
        // 구현 내용
    }
}

 

5. 상수 (Constants)

인터페이스는 상수를 정의할 수 있으며, 이러한 상수는 public static final로 암시적으로 정의됩니다.

 

6. 정적 메서드 (Static Methods)

Java 8부터 인터페이스는 정적 메서드를 가질 수 있습니다. 이러한 메서드는 인터페이스의 이름으로 직접 호출할 수 있습니다.

interface MyInterface {
    static void staticMethod() {
        System.out.println("Static method in an interface");
    }
}

 

7. 디폴트 메서드 (Default Methods)

Java 8부터 인터페이스는 디폴트 메서드를 가질 수 있습니다. 디폴트 메서드는 구현이 제공되었지만 하위 클래스에서 재정의할 수 있습니다.

interface MyInterface {
    default void defaultMethod() {
        System.out.println("Default method in an interface");
    }
}

 

8. 인터페이스의 이점

인터페이스는 클래스 간의 결합을 약하게 만듭니다. 이것은 코드의 유연성을 증가시키며, 클래스를 재사용하고 확장하기 쉽게 만듭니다.
인터페이스를 사용하면 다중 상속의 잠재적인 문제를 피할 수 있습니다.
인터페이스를 통해 API의 명세와 구현을 분리할 수 있으므로, 표준화된 프로그래밍 방식을 정의하는 데 도움이 됩니다.

인터페이스는 자바에서 코드의 추상화와 모듈화를 촉진하는 강력한 도구로, 코드 재사용성을 향상시키고 프로그램을 확장하기 쉽게 만듭니다. Java API에서도 인터페이스가 많이 활용되며, 이를 통해 다양한 클래스가 표준화된 방식으로 상호 작용할 수 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 보안  (0) 2023.11.05
자바 재사용성  (0) 2023.11.05
자바 추상화 (Abstraction)  (0) 2023.11.05
자바 다형성 (Polymorphism)  (0) 2023.11.05
자바 상속 (Inheritance)  (0) 2023.11.05