[java] 다중 상속의 제한과 인터페이스의 활용

자바는 클래스당 하나의 클래스만 상속 받을 수 있는 단일 상속 언어이기 때문에, 여러 클래스에서 상속을 받을 경우에는 다중 상속이 제한됩니다.

이러한 경우 인터페이스를 활용하여 다중 상속과 유사한 기능을 구현할 수 있습니다. 인터페이스를 사용하면 클래스 간의 관계를 정의하고, 해당 인터페이스를 구현 함으로써 클래스가 특정 기능을 수행할 수 있도록 하는 데 유용합니다.

인터페이스의 정의

인터페이스는 추상 메서드상수를 정의하는데 사용됩니다. 인터페이스는 interface 키워드를 사용하여 선언되며, 클래스와 마찬가지로 메서드의 시그니처만을 정의하고 메서드의 몸통을 포함하지 않습니다.

public interface Drawable {
    void draw();
}

위의 코드는 Drawable 인터페이스를 정의하고, draw 메서드를 선언하고 있습니다.

인터페이스의 구현

인터페이스를 구현하는 클래스는 implements 키워드를 사용하여 구현할 수 있습니다. 아래의 예제는 Drawable 인터페이스를 구현하는 Circle 클래스를 보여줍니다.

public class Circle implements Drawable {
    public void draw() {
        // draw circle
    }
}

다중 상속을 대체하는 인터페이스

다수의 인터페이스를 구현함으로써 다중 상속을 대체할 수 있습니다.

public class Circle implements Drawable, Colorable {
    // draw and color methods implementation
}

위의 예시는 다중 상속을 한 클래스에 대체하여, DrawableColorable 인터페이스를 구현하는 하나의 클래스를 나타내고 있습니다. 이렇게 함으로써, 클래스들 간의 유연한 관계를 정의하고 원하는 기능을 구현할 수 있습니다.

다중 상속의 제한으로 인해 발생하는 제약을 극복하고자 할 때, 인터페이스를 적절히 활용하여 여러 클래스 간의 동작을 유연하게 정의할 수 있습니다.