자바에서 추상 클래스와 인터페이스는 다형성을 구현하기 위한 중요한 개념입니다. 그러나 추상 클래스와 인터페이스는 필드와 메서드를 다르게 정의하고 사용합니다. 이 글에서는 자바 추상 클래스와 인터페이스의 필드와 메서드의 주요 차이에 대해 설명하겠습니다.
추상 클래스
추상 클래스는 클래스와 인터페이스 사이에 중간 단계의 개념으로, 일부 메서드를 구현하고 일부 메서드를 추상화할 수 있습니다. 추상 클래스 내에는 다음과 같은 필드와 메서드를 정의할 수 있습니다.
필드 (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);
}
결론
자바에서 추상 클래스와 인터페이스는 필드와 메서드의 정의와 사용 방법이 다릅니다. 추상 클래스는 필드와 구현된 일반 메서드를 모두 가질 수 있지만, 추상 메서드는 자식 클래스에서 구현되어야 합니다. 반면에 인터페이스는 필드는 상수만을 가지며, 메서드는 추상 메서드만을 가집니다. 이러한 차이점을 이해하고 사용하여 다형성을 구현하는데 활용할 수 있습니다.
참고: