이 글에서는 Java에서 자주 혼동되는 두 키워드, extends와 implements의 차이점을 명확하게 정리해 보겠습니다. 두 키워드는 모두 객체지향 프로그래밍의 핵심 개념인 상속과 관련이 있지만, 사용 목적과 적용 규칙이 다릅니다.
extends란?
extends는 클래스 간의 상속을 위해 사용되는 키워드입니다. 주요 특징은 다음과 같습니다.
- 한 클래스를 기반 클래스(부모 클래스)로 삼아, 다른 클래스가 이를 상속받을 수 있습니다.
- 인터페이스도 extends 키워드를 사용하여 다른 인터페이스를 상속할 수 있습니다.
- 클래스는 단 하나의 슈퍼클래스만 상속할 수 있습니다. 즉, 다중 상속이 허용되지 않습니다.
- 반면 인터페이스는 여러 개의 인터페이스를 동시에 상속할 수 있습니다.
- 슈퍼클래스를 상속받는 서브클래스는 부모 클래스의 모든 메서드를 반드시 오버라이드할 필요가 없습니다.
다음은 extends 키워드의 기본적인 사용 예시입니다.
예제 코드
class Super {
.....
.....
}
class Sub extends Super {
.....
.....
}implements란?
implements는 클래스가 인터페이스를 구현할 때 사용되는 키워드입니다. 주요 특징은 다음과 같습니다.
- 클래스가 인터페이스에 정의된 추상 메서드들을 실제로 구현하도록 만듭니다.
- 클래스는 한 번에 여러 개의 인터페이스를 동시에 구현할 수 있습니다.
- 인터페이스를 구현하는 클래스는 해당 인터페이스의 모든 메서드를 반드시 구현해야 합니다.
- 인터페이스가 다른 인터페이스를 상속할 때는 implements를 사용할 수 없으며, 이 경우에는 extends만 사용해야 합니다.
다음은 implements와 extends를 함께 활용한 예시입니다.
예제 코드
public interface Animal {
}
public class Mammal implements Animal {
}
public class Dog extends Mammal {
}정리
위 예제에서 볼 수 있듯이, Mammal 클래스는 Animal 인터페이스를 구현(implements)하고, Dog 클래스는 Mammal 클래스를 상속(extends)합니다. 즉, extends는 부모 클래스의 기능을 물려받아 확장하는 데 사용되고, implements는 인터페이스가 요구하는 기능을 클래스가 직접 구현하는 데 사용됩니다. 이 두 키워드의 역할을 정확히 이해하면 Java의 상속 구조와 다형성 설계를 더욱 효과적으로 활용할 수 있습니다.