다중 상속은 객체지향 프로그래밍 언어에서 한 클래스가 둘 이상의 클래스로부터 상속받는 것을 말합니다. 자바는 다중 상속을 지원하지 않습니다. 이는 다중 상속으로 인해 발생할 수 있는 다양한 문제들(예: 다이아몬드 문제)로부터 보호하기 위함입니다.
그러나 자바에서는 인터페이스를 활용하여 이러한 다중 상속 제한 문제를 극복할 수 있습니다.
인터페이스의 개념
인터페이스는 메서드의 선언만을 갖고 있으며, 구현은 없습니다. 인터페이스는 interface
키워드를 사용하여 정의하며, 다른 클래스에 의해 구현될 수 있는 추상형을 제공합니다.
아래는 인터페이스의 간단한 예시입니다.
public interface Shape {
double getArea();
void draw();
}
위의 예시에서 Shape
인터페이스는 getArea
와 draw
메서드의 선언만을 포함하고 있습니다.
인터페이스의 활용
다양한 클래스들이 동일한 메서드를 갖도록 하기 위해서 인터페이스를 사용할 수 있습니다. 이를 통해 서로 다른 클래스가 동일한 동작을 할 수 있도록 하여 다형성을 구현할 수 있습니다.
인터페이스는 또한 클래스가 여러 개의 인터페이스를 구현할 수 있도록 하여, 일종의 다중 상속을 대체할 수 있는데, 이를 인터페이스 다중 상속이라고 합니다.
아래는 인터페이스의 활용 예시입니다.
public class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public void draw() {
// draw circle
}
}
위의 예시에서 Circle
클래스는 Shape
인터페이스를 구현하여 getArea
와 draw
메서드를 갖게 됩니다.
따라서 자바에서는 다중 상속을 지원하지 않지만, 인터페이스를 활용하여 다형성과 유연한 설계를 할 수 있습니다.
결론
자바에서의 다중 상속을 제한하는 방법은 인터페이스를 활용하는 것입니다. 인터페이스를 통해 클래스들 간의 관계를 유연하게 구성할 수 있으며, 코드의 재사용성과 유지보수 용이성을 높일 수 있습니다.
참고 문헌:
- https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html
- https://www.geeksforgeeks.org/understanding-interfaces-in-java/
다음 단계
- 인터페이스와 추상 클래스의 차이점을 알아보기
- 인터페이스 다중 상속의 활용 예시 탐구하기