[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();
}
결론
- 추상 클래스는 추상 메서드와 일반 메서드를 모두 가질 수 있지만, 인터페이스는 추상 메서드와 상수만을 가질 수 있습니다.
- 추상 클래스는 단일 상속만을 지원하지만, 인터페이스는 다중 상속을 지원합니다.
- 추상 클래스는
abstract
키워드를 사용하여 정의되지만, 인터페이스는interface
키워드를 사용하여 정의됩니다.
이러한 차이점들로 인해, 두 가지 개념은 서로 다른 용도와 목적을 가지고 있으며, 상황에 맞게 적절하게 활용해야 합니다.
참고문헌:
- https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
- https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html