다형성_추상클래스

한라봉봉·2025년 7월 29일

JAVA

목록 보기
15/16

추상 클래스1

추상 클래스

Animal과 같이 부모 클래스는 제공하지만, 실제 생성되면 안되는 클래스를 추상 클래스라 한다.
추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스이다. 따라서 실체인 인스턴스가 존재하지 않는다. 대신에 상속을 목적으로 사용되고, 부모 클래스 역할을 담당한다.

abstract class AbstractAnimal {...}
  • new AbstractAnimal() 처럼 직접 인스턴스를 생성하지 못하는 제약이 추가된다.
  • 추상 클래스 안에는 일반 메서드도 존재할 수 있다.
  • 추상 클래스 덕분에 실수로 Animal 인스턴스를 생성할 문제를 근본적으로 방지해준다.

추상 메서드

부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드를 부모 클래스에 정의할 수 있다. 이것을 추상 메서드라 한다. 추상 메서드는 이름 그대로 추상적인 개념을 제공하는 메서드이다. 따라서 실체가 존재하지 않고, 메서드 바디가 없다.

 public abstract void sound();
  • 추상 메서드가 하나라도 있는 클래스는 추상 클래스로 선언해야 한다.(컴파일 오류)
  • 오버라이딩 하지 않으면 컴파일 오류가 나므로 오버라이딩하거나 자식도 추상 클래스가 되어야 한다.
  • 추상 메서드 덕분에 새로운 동물의 자식 클래스를 만들때 실수로 sound() 오버라이딩 하지 않을 문제를 근본적으로 방지해준다.

추상클래스 2

순수 추상 클래스

순수 추상 클래스의 개념은 프로그래밍에서 매우 자주 사용된다. 자바는 순수 추상 클래스를 더 편리하게 사용할 수 있도록 인터페이스라는 개념을 제공한다. 사실 자바에는 순수 추상 클래스라는 개념은 없다. 인터페이스가 있다!

모든 메서드가 추상 메서드인 순수 추상 클래스는 코드를 실행할 바디 부분이 전혀 없다.

 public abstract class AbstractAnimal {
   public abstract void sound();
   public abstract void move();
 }

순수 추상 클래스는 다음과 같은 특징을 가진다.

  • 인스턴스를 생성할 수 없다.
  • 상속시 자식은 모든 메서드를 오버라이딩(구현) 해야 한다.
  • 주로 다형성을 위해 사용된다.
profile
백엔드 개발공부 로그를 기록합니다

0개의 댓글