[java] 추상 클래스와 인터페이스를 사용할 때 고려해야 할 사항
추상 클래스와 인터페이스는 객체 지향 프로그래밍에서 중요한 개념입니다. 이들을 사용하면 코드의 재사용성과 유연성을 높일 수 있습니다. 하지만, 언제 어떤 것을 사용해야 하는지에 따라 고려해야 할 사항들이 있습니다.
추상 클래스
- 추상 클래스는 하나 이상의 추상 메서드를 포함할 수 있는 클래스입니다.
- 추상 클래스는 일반 메서드와 추상 메서드를 함께 가질 수 있습니다.
- 추상 클래스는 객체 지향 프로그래밍에서 다형성을 구현하는데 사용될 수 있습니다.
- 추상 클래스는 부모 클래스로 사용되어 공통의 기능을 가진 하위 클래스를 만들 수 있습니다.
- 추상 클래스는 인스턴스를 직접 생성할 수 없으며, 하위 클래스에서 상속 받아 사용해야 합니다.
인터페이스
- 인터페이스는 추상 메서드와 상수만을 가질 수 있는 개체입니다.
- 인터페이스는 클래스의 특정 동작을 정의하는데 사용됩니다.
- 인터페이스는 다른 클래스들에게 해당 동작을 구현하도록 강제합니다.
- 인터페이스는 클래스를 다중 상속할 수 있는 기능을 제공합니다.
- 인터페이스는 클래스의 관계를 결합력 있게 만들어줍니다.
고려해야 할 사항들
- 기능의 공유: 추상 클래스는 공통된 기능을 가진 클래스들의 상위 클래스로 사용될 수 있습니다. 반면에, 인터페이스는 다양한 기능을 가진 클래스에 대해 동일한 동작을 정의할 수 있습니다.
- 다중 상속: 자바에서는 클래스는 단일 상속만을 지원합니다. 따라서, 여러 개의 클래스에서 동일한 동작을 구현하기 위해서는 인터페이스를 사용해야 합니다.
- 확장 가능성: 추상 클래스는 추상 메서드 외에도 일반 메서드를 가질 수 있습니다. 이로 인해, 추후에 기능을 추가하기에 더 유연한 확장성을 가질 수 있습니다.
- 종속성: 추상 클래스는 클래스 상속을 통해 사용되기 때문에, 상속하는 클래스와 강한 종속성을 가지게 됩니다. 반면에, 인터페이스는 클래스와 더 약한 종속성을 가지며, 이를 통해 소스 코드의 유지보수와 확장이 더 쉬워집니다.
각각의 상황에 따라 추상 클래스와 인터페이스를 선택할 필요가 있습니다. 적절한 선택은 코드의 유지보수성, 재사용성, 확장성 등을 고려하여 결정해야 합니다. 각각의 장단점을 잘 이해하고 사용하면 좋은 코드를 작성할 수 있을 것입니다.
참고 자료: