자바 공부/[ 完 ] 자바 실전 - 기본편

10-6. 다형성 - 추상클래스

잘데친갈비 2024. 3. 29. 14:33

추상클래스

  • 부모 클래스는 제공하지만, 실제 생성되면 안되는 클래스를 말한다.
  • 말그대로 추상적인 개념을 제공하는 클래스로, 객체(인스턴스)가 존재하지 않는다.
  • 상속의 목적으로 사용되고, 부모 클래스 역할을 담당한다.
  • 개발자가 실수로 오버라이딩을 하지 않고 생성하여 코드상 아무런 문제가 발생하지 않는 경우가 생기는것을 방지하기 위해 사용한다.

→ 사용 법 ) class 앞에 abstract 를 붙여주어 사용한다.

abstract class AbstractAnimal{ ... } // <- 추상 클래스 선언

⇒ 특징 )

  1. 추상 클래스는 기존 클래스와 완전 같다
  2. 다만 new AbstactAnimal 과 같은 자신으로 객체 (인스턴스) 생성을 못하도록 막는다.

추상메서드

  • 부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드 이다.
  • 부모 클래스에 작성한 추상 메서드는 body 부분이 없어야 한다.

→ 사용 법 ) class 와 마찬가지로 class 의 메서드 앞에 abstract 를 붙여주어 사용한다.

abstract class AbstractAnimal{ // <- 추상 클래스 선언
		public abstract void sound () // <- 추상 메서드 선언
} 

⇒ 특징 )

  1. 추상 메서드가 1개라도 있는 클래스는 무조건 추상 class 로 만들어 주어야한다.
  2. 추상 메서드는 자식 클래스에서 반드시 오버라이딩 되어 사용되어야 한다. → 그렇지 않으면 컴파일 오류가 발생한다.
  3. 만약 추상 메서드가 존재한 클래스를 상속 받는 자식 클래스가 추상 메서드를 오버라이딩 하지 않는다면 해당 자식 클래스도 추상 클래스가 되어야 오류가 발생하지 않는다.

⇒ 결론 ) 추상 메서드는 기존 메서드와 같지만 바디가 없고, 자식 클래스에서 반드시 오버라이딩 되거나 자식을 추상 클래스로 만들어야하는 제약이 생긴다.

추상 클래스, 추상 메서드 결론

  • 추상 클래스 덕분에 실수로 부모 객체를 생성 하는 문제를 근본적으로 방지해준다.
  • 추상 메서드 덕분에 새로운 자식 클래스를 만들 때 필수 오버라이딩을 안 하는 문제를 방지해준다.