[java] 자바 추상 클래스와 인터페이스의 상속 관계

자바에서 추상 클래스와 인터페이스는 상속을 통해 다른 클래스에 기능을 제공하는 역할을 합니다. 하지만 추상 클래스와 인터페이스는 서로 다른 특징과 사용 방법을 가지고 있습니다. 이 글에서는 자바 추상 클래스와 인터페이스의 상속 관계에 대해 알아보도록 하겠습니다.

추상 클래스의 상속

추상 클래스는 일반 클래스와 마찬가지로 다른 클래스에 상속될 수 있습니다. 추상 클래스는 하나 이상의 추상 메서드를 가지고 있으며, 이를 상속받은 클래스에서 반드시 구현해야 합니다. 또한, 추상 클래스는 일반 메서드나 필드를 가질 수도 있습니다.

public abstract class AbstractClass {
    // 추상 메서드
    public abstract void method();

    // 일반 메서드
    public void commonMethod() {
        System.out.println("This is a common method");
    }
}

public class ConcreteClass extends AbstractClass {
    // 추상 메서드 구현
    @Override
    public void method() {
        System.out.println("This is an implemented method");
    }
}

위의 예시 코드에서 AbstractClass는 추상 클래스로, method라는 추상 메서드를 정의하고, commonMethod라는 일반 메서드를 정의합니다. 이 추상 클래스는 ConcreteClass에서 상속받아 method를 구현하고, commonMethod를 사용할 수 있습니다.

인터페이스의 상속

인터페이스는 다른 인터페이스에 상속될 수 있습니다. 인터페이스는 추상 메서드만을 가지며, 이를 상속받은 인터페이스나 클래스에서 반드시 구현해야 합니다.

public interface ParentInterface {
    void parentMethod();
}

public interface ChildInterface extends ParentInterface {
    void childMethod();
}

public class ConcreteClass implements ChildInterface {
    public void parentMethod() {
        System.out.println("This is a method from parent interface");
    }

    public void childMethod() {
        System.out.println("This is a method from child interface");
    }
}

위의 예시 코드에서 ParentInterface는 인터페이스로, parentMethod라는 추상 메서드를 정의합니다. 이 인터페이스는 ChildInterface에서 상속받아 childMethod를 추가로 정의합니다. ConcreteClassChildInterface를 구현하며, parentMethodchildMethod를 구현합니다.

추상 클래스와 인터페이스의 관계

추상 클래스와 인터페이스는 상속 관계에 있을 수 있습니다. 추상 클래스가 인터페이스를 상속받는다면, 추상 클래스는 인터페이스의 추상 메서드를 구현해야 합니다. 이를 통해 추상 클래스는 인터페이스의 기능을 확장하고, 추가적인 구현을 할 수 있습니다.

public interface Interface {
    void method();
}

public abstract class AbstractClass implements Interface {
    @Override
    public void method() {
        System.out.println("This is a method implementation in abstract class");
    }
}

위의 예시 코드에서 AbstractClass는 추상 클래스로, Interface를 상속받아 method를 구현합니다. 이를 통해 AbstractClassInterface의 기능을 확장하고 사용할 수 있습니다.

결론

자바에서 추상 클래스와 인터페이스는 상속을 통해 기능을 제공하며, 상속 관계에 따라 다양한 구현이 가능합니다. 추상 클래스는 일반 메서드와 필드를 포함할 수 있으며, 인터페이스는 추상 메서드만을 가질 수 있습니다. 이를 통해 자바에서 다형성과 유연성을 높일 수 있습니다.


참고자료