[java] 상속과 인터페이스의 차이점

자바에서는 클래스 간의 관계를 나타내는 데에 상속과 인터페이스를 사용합니다. 이 두 가지의 주요한 차이점을 알아보겠습니다.

상속 (Inheritance)

상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 것을 의미합니다. 이로써 코드의 재사용이 용이해지고, 부모 클래스의 기능을 확장하여 자식 클래스를 정의할 수 있습니다.

예를 들어, 다음과 같이 Vehicle 클래스가 있고, Car 클래스가 Vehicle 클래스를 상속받는다면:

public class Vehicle {
    // 속성과 메서드 정의
}

public class Car extends Vehicle {
    // Vehicle 클래스로부터 상속받은 속성과 메서드를 포함하고, 자체적인 추가 기능을 정의
}

인터페이스 (Interface)

인터페이스는 클래스에서 구현해야 하는 메서드의 목록을 정의합니다. 클래스는 여러 인터페이스를 구현하여 해당 인터페이스들에서 정의된 메서드들을 구현해야 합니다. 이를 통해 다중 상속을 효과적으로 지원하며, 클래스 간의 결합도를 줄일 수 있습니다.

예를 들어, 다음과 같이 Drawable 인터페이스가 있고, 해당 인터페이스를 구현하는 Circle 클래스가 있다면:

public interface Drawable {
    void draw();
}

public class Circle implements Drawable {
    // Drawable 인터페이스에서 정의된 draw() 메서드를 구현
}

결론

상속은 클래스 간의 계층적인 구조를 형성하며, 메서드와 속성을 상속받을 수 있게 해줍니다. 반면에 인터페이스는 클래스 간의 관련성을 정의하고, 다중 상속을 지원하여 유연한 설계를 가능하게 합니다.

자바에서는 클래스를 통한 단일 상속만을 지원하므로, 인터페이스를 사용하여 다중 상속에 대한 요구를 충족시킬 수 있습니다.

참고 자료