[Java] 추상 클래스

2025. 2. 4. 00:57·TIL/Java

추상 클래스란?

  • 인터페이스의 역할을 하는데 클래스의 기능도 갖춘 신기한 친구이다

추상 클래스의 특징

  • 일반적인 클래스와 아주 동일하다. 필드, 생성자, 메서드를 갖고 있다.
  • 다만 추상 클래스는 생성자를 통해서 인스턴스를 생성할 수 없다. 추상 클래스를 상속받은 자식 클래스를 통해서만 인스턴스 생성이 가능하다
  • 이 때도 생성자에서 다루었듯 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
'TIL/Java' 카테고리의 다른 글
  • [Java] toString()
  • [Java] Object 클래스
  • [Java] 인터페이스
  • [Java] 클래스의 생성자
Charlie.han
Charlie.han
백엔드 개발자가 되기 위해 공부한 것들(Java, Spring, SQL, 네트워크, AWS 등)을 기록하고 공유하는 블로그입니다.
  • Charlie.han
    Chalie's Devlog
    Charlie.han
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • TIL (32)
        • Java (20)
        • Spring (2)
        • SQL (5)
        • 알고리즘 (4)
        • 트러블슈팅 (1)
      • WIL (0)
        • 카카오테크 부트캠프 (0)
  • 태그

    string
    데이터베이스
    jdk란?
    sql where
    타입안전열거형
    프로그래머스 베스트앨범 자바
    unsupported characters for the charset 'iso-8859-1'
    Java
    프로그래머스 소수찾기
    프로그래머스 소수찾기 자바
    인텔리제이 한글 깨짐
    인텔리제이한글
    묵시적형변환
    컬렉션프레임워크
    default메서드
    SQL
    프로그래머스
    인스턴스
    static 필드
    불변객체
    인터페이스
    static메서드
    참조공유
    다형성
    자바
    제네릭 클래스
    super()
    프로그래머스 베스트앨범
    sql limit
    object
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Charlie.han
[Java] 추상 클래스
상단으로

티스토리툴바