추상 클래스란?
- 인터페이스의 역할을 하는데 클래스의 기능도 갖춘 신기한 친구이다
추상 클래스의 특징
- 일반적인 클래스와 아주 동일하다. 필드, 생성자, 메서드를 갖고 있다.
- 다만 추상 클래스는 생성자를 통해서 인스턴스를 생성할 수 없다. 추상 클래스를 상속받은 자식 클래스를 통해서만 인스턴스 생성이 가능하다
- 이 때도 생성자에서 다루었듯 super()를 통해서 부모 클래스의 인스턴스가 먼저 생성된다
- 보통 추상 클래스는 추상 메서드를 1개 이상 포함하고 있다
- 인터페이스에서와 마찬가지로 추상 메서드를 자식 클래스에서 구현해야 한다
- 선언 방법은 다음과 같다
abstract [접근제한자] class 클래스명 {
필드,
생성자,
메서드,
추상메서드
}
인터페이스 vs 추상 클래스
- 인터페이스와 추상 클래스 모두 추상화를 구현하는 방식이지만, 용도가 다르고 사용하는 방식에도 차이가 있다
- 최근 인터페이스가 많이 쓰이는 이유는 인터페이스는 다중 구현이 가능하기 때문이다. 자바에서는 다중 상속이 제한되지만 인터페이스를 사용하면 비슷한 효과를 낼 수 있다.
- Java 8 이후 인터페이스에서 default , static 메서드를 사용할 수 있어지면서 인터페이스와 추상 클래스 간의 차이가 좀 더 모호해진 부분이 있다
- 무엇보다 스프링에서 인터페이스를 활용한 설계가 많기 때문에 인터페이스를 주로 사용하고 있다
- 다만 공통된 필드나 기본 기능을 갖고 있으면서 상속을 통해 확장하려는 경우 추상 클래스가 필요할 것이다
'TIL > Java' 카테고리의 다른 글
[Java] toString() (0) | 2025.02.04 |
---|---|
[Java] Object 클래스 (1) | 2025.02.04 |
[Java] 인터페이스 (0) | 2025.02.04 |
[Java] 클래스의 생성자 (0) | 2025.02.03 |
[Java] 자바의 객체 지향 문법 (0) | 2025.02.03 |