추상 클래스

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
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (209)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (14)
      • 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
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

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

티스토리툴바