추상 클래스

2024. 10. 8. 17:57·Programming/Java

목차

1. 추상 클래스 특징

2. 인터페이스와 차이점

3. 추상 클래스의 목적

 

"추상 클래스는 공통 기능을 제공하면서 하위 클래스가 필수적으로 구현해야 할 규격을 정의하여 일관성과 다형성을 지원하는 클래스 설계 도구이다."

 

1. 추상 클래스 특징

- 일부 메서드를 구현하지 않고 서브 클래스에서 구체화하도록 강제하는 클래스

- 인스턴스화 할 수 없다

- 세부 구현은 자식 클래스가 맡는다.

public abstract class Animal {
    public String kind;

    public void breath(){
        System.out.println("숨 쉰다.");
    }
    //추상메서드
    public abstract void sound();//구체적인 구현부는 없음!
}

 

2. 인터페이스와 차이점

  상속 메서드 구현
추상 클래스 다중 상속 X 일부 메서드는 구현을 제공
인터페이스  다중 상속 O 모든 메서드 구현 없이 선언만

추상 클래스

public abstract class Animal {
    public abstract void eat();
}

public abstract class Mammal {
    public abstract void walk();
}

// 오류가 발생하는 예
public class Dog extends Animal, Mammal { // 다중 상속 불가
    @Override
    public void eat() {
        System.out.println("Dog eats.");
    }

    @Override
    public void walk() {
        System.out.println("Dog walks.");
    }
}

인터페이스

public interface Flyable {
    void fly();
}

public interface Swimmable {
    void swim();
}

public class Duck implements Flyable, Swimmable {
    @Override
    public void fly() {
        System.out.println("Duck flies.");
    }

    @Override
    public void swim() {
        System.out.println("Duck swims.");
    }
}

추상 클래스의 목적

- 공통된 기능 제공

- 구현 강제(추상 메서드)

- 다형성 지원(다형성: 같은 기능인데, 다른 결과를 도출할 수 있음)

- 코드 일관성 유지

'Programming > Java' 카테고리의 다른 글

Interface와 Abstract Class 차이  (0) 2024.12.02
JDK와 JRE  (0) 2024.10.29
SOLID, 객체 지향 설계 원칙  (0) 2022.02.25
업캐스팅, 다운캐스팅  (0) 2022.02.23
ArrayList vs LinkedList  (0) 2022.02.23
'Programming/Java' 카테고리의 다른 글
  • Interface와 Abstract Class 차이
  • JDK와 JRE
  • SOLID, 객체 지향 설계 원칙
  • 업캐스팅, 다운캐스팅
사랑우주인
사랑우주인
  • 사랑우주인
    lovelyAlien
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (207)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (12)
      • OS (19)
      • Database (1)
      • Kubernetes (0)
      • Kafka (2)
      • Algorithm (49)
        • BaekJoon (1)
        • Programmers (19)
        • Algorithm (5)
        • Socar (2)
        • LeetCode (19)
      • Interview (2)
      • Issues (2)
      • DotJoin (1)
      • Git (4)
      • 독서 (3)
      • 끄적끄적 (1)
      • 외부활동 (26)
        • 항해플러스 (2)
        • JSCODE 네트워크 (19)
        • JSCODE 자바 (5)
      • SQL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Oauth2
    BFS
    Reorder List
    rotting oranges
    디자인 패턴
    추상화 클래스
    RR
    @JsonProperty
    제네릭
    minimum number of arrows to burst balloons
    clone graph
    Process
    AuthenticationSuccessHandler
    wildcards
    fcfs
    준영속 엔티티
    Thread
    트랜잭션
    Generic
    JSCode
    @JsonNaming
    pacific atlantic water flow
    runner 기법
    운영체제
    LinkedList
    OS
    algorithm
    Climbing Stairs
    lower bounded wildcards
    socar
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
사랑우주인
추상 클래스

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.