[java] 인터페이스와 추상 클래스의 차이점은?

자바에서 인터페이스(Interface)추상 클래스(Abstract Class)는 둘 다 다형성과 추상화를 지원하는데 사용됩니다. 하지만 두 가지 개념에는 몇 가지 중요한 차이점이 있습니다.

1. 추상 클래스

추상 클래스일반 클래스와 유사하게 필드, 메서드, 생성자 등을 포함할 수 있지만, 추상 메서드를 포함할 수 있습니다. 추상 클래스 내에 최소 하나 이상의 추상 메서드가 존재해야 합니다. 또한, 추상 클래스는 abstract 키워드를 사용하여 정의됩니다.

예제 코드

public abstract class Shape {
    private String color;

    public Shape(String color) {
        this.color = color;
    }

    public abstract double area();
}

2. 인터페이스

인터페이스추상 메서드상수만을 포함할 수 있습니다. 인터페이스는 클래스와 상속관계에 있지 않으며, 여러 개의 인터페이스를 구현할 수 있습니다. 인터페이스는 interface 키워드를 사용하여 정의됩니다.

예제 코드

public interface Drawable {
    int MIN_SIZE = 0;

    void draw();
    void resize();
}

결론

이러한 차이점들로 인해, 두 가지 개념은 서로 다른 용도와 목적을 가지고 있으며, 상황에 맞게 적절하게 활용해야 합니다.


참고문헌: