[java] 자바 추상 클래스와 인터페이스의 필드와 메서드의 차이

자바에서 추상 클래스와 인터페이스는 다형성을 구현하기 위한 중요한 개념입니다. 그러나 추상 클래스와 인터페이스는 필드와 메서드를 다르게 정의하고 사용합니다. 이 글에서는 자바 추상 클래스와 인터페이스의 필드와 메서드의 주요 차이에 대해 설명하겠습니다.

추상 클래스

추상 클래스는 클래스와 인터페이스 사이에 중간 단계의 개념으로, 일부 메서드를 구현하고 일부 메서드를 추상화할 수 있습니다. 추상 클래스 내에는 다음과 같은 필드와 메서드를 정의할 수 있습니다.

필드 (Fields)

추상 클래스 내에 필드를 선언하는 것은 일반적인 클래스와 동일합니다. 필드는 클래스의 속성을 나타내며, 해당 클래스의 인스턴스의 상태를 나타냅니다.

public abstract class AbstractClass {
    private int field1;
    protected String field2;
    public static final int field3 = 10;
}

메서드 (Methods)

추상 클래스는 추상 메서드와 구현된 일반 메서드를 모두 가질 수 있습니다. 추상 메서드는 자식 클래스에서 반드시 구현되어야 합니다. 구현된 일반 메서드는 추상 클래스 내에서 동작을 정의합니다.

public abstract class AbstractClass {
    public abstract void abstractMethod();
    
    public void normalMethod() {
        // 일반 메서드의 구현 내용
    }
}

인터페이스

인터페이스는 클래스의 일부 기능을 정의하는 역할을 합니다. 인터페이스는 다른 클래스에서 사용할 수 있는 일련의 메서드 시그니처를 제공합니다. 인터페이스는 다음과 같은 필드와 메서드를 정의할 수 있습니다.

필드 (Fields)

인터페이스 내에 선언된 필드는 기본적으로 public static final 필드입니다. 즉, 상수를 정의하는 용도로 사용됩니다.

public interface Interface {
    int FIELD1 = 10;
    String FIELD2 = "Hello";
}

메서드 (Methods)

인터페이스는 추상 메서드만을 가질 수 있습니다. 인터페이스의 메서드는 정의만 하고 구현은 자식 클래스에서 해야 합니다.

public interface Interface {
    void method1();
    String method2(int parameter);
}

결론

자바에서 추상 클래스와 인터페이스는 필드와 메서드의 정의와 사용 방법이 다릅니다. 추상 클래스는 필드와 구현된 일반 메서드를 모두 가질 수 있지만, 추상 메서드는 자식 클래스에서 구현되어야 합니다. 반면에 인터페이스는 필드는 상수만을 가지며, 메서드는 추상 메서드만을 가집니다. 이러한 차이점을 이해하고 사용하여 다형성을 구현하는데 활용할 수 있습니다.


참고: