다중상속 인터페이스

허성재's avatar
Aug 19, 2024
다중상속 인터페이스

다중 상속 인터페이스란?

다중 상속 인터페이스는 하나의 인터페이스가 두 개 이상의 다른 인터페이스로부터 상속을 받는 것을 의미합니다. 이때, 상속받은 여러 인터페이스의 메서드를 하나의 새로운 인터페이스로 묶어서 정의할 수 있습니다.
자바에서는 클래스의 다중 상속은 허용되지 않지만, 인터페이스 간의 다중 상속은 허용됩니다. 이를 통해 새로운 인터페이스가 여러 부모 인터페이스의 특성을 모두 가질 수 있게 됩니다.

예제 코드

interface Drivable { void drive(); } interface Flyable { void fly(); } // Vehicle 인터페이스는 Drivable과 Flyable 인터페이스를 다중 상속받음 interface Vehicle extends Drivable, Flyable { void startEngine(); }
위 코드에서 Vehicle 인터페이스는 DrivableFlyable이라는 두 인터페이스를 다중 상속받았습니다. 이로 인해 Vehicle 인터페이스는 drive()fly() 메서드를 모두 포함하게 됩니다.
이제, Vehicle 인터페이스를 구현하는 클래스는 이 세 개의 메서드를 모두 구현해야 합니다.
class Car implements Vehicle { @Override public void drive() { System.out.println("Car is driving"); } @Override public void fly() { System.out.println("Car can't fly"); } @Override public void startEngine() { System.out.println("Engine started"); } }

다중 상속 인터페이스의 장점

  1. 코드 재사용성: 여러 인터페이스에서 정의된 기능을 새로운 인터페이스에 통합하여, 이를 구현하는 클래스에서 재사용할 수 있습니다.
  1. 유연한 설계: 인터페이스가 여러 부모 인터페이스의 기능을 가져올 수 있어, 다양한 기능을 가진 복합적인 인터페이스를 쉽게 만들 수 있습니다.

다중 상속 인터페이스의 충돌 문제

만약 상속받는 인터페이스들이 동일한 메서드 시그니처를 가지고 있다면, 이를 구현하는 클래스에서는 해당 메서드를 명확하게 정의해야 합니다.
interface A { void doSomething(); } interface B { void doSomething(); } interface C extends A, B { // C는 doSomething() 메서드를 가짐 } class MyClass implements C { @Override public void doSomething() { System.out.println("MyClass does something"); } }
위에서 AB가 동일한 메서드인 doSomething()을 정의하고 있기 때문에, C를 구현하는 MyClass는 이 메서드를 한 번만 구현하면 됩니다.

결론

다중 상속 인터페이스는 인터페이스가 여러 부모 인터페이스로부터 상속을 받을 수 있는 개념으로, 다양한 기능을 유연하게 조합하여 사용할 수 있도록 해줍니다. 이를 통해 코드의 재사용성을 높이고, 복잡한 구조를 단순화하는 데 도움이 됩니다.
Share article

heo-gom