본문 바로가기
Java

추상 클래스(abstract class)

by 재성스 2023. 8. 30.
반응형

추상 클래스란?(abstract class)

추상 클래스란? 미완성 설계도 또는 미완성 메서드를 갖고 있는 클래스라고 표현할 수 있다.

추상 클래스는 클래스 선언부에 abstract 키워드를 선언하며, 추상 메서드를 하나라도 포함하고 있으면 추상 클래스이다.
(단, 추상 메서드를 포함하지 않아도 abstract 키워드가 선언되어 있으면 추상 클래스가 될 수 있다.)

 

추상 클래스는 인스턴스 생성이 불가하며, 상속을 통해 하위 클래스에서 상위 클래스의 "모든 추상 메서드"를 완성해야만 인스턴스를 생성할 수 있다.  

 

즉 인스턴스는 클래스라는 설계도 기반으로 '실체화된 존재'와 같은 개념이므로, 미완성 설계도인 추상 클래스로는 어떠한 존재를 실체화 할 수 없는 것이라고 생각하면 이해가 쉬울 것이다. 

 

정리하자면, 추상 클래스는 공통 개념을 갖는 하위 클래스의 뼈대 구조 역할을 하기 위한 '미완성 설계도'이며, 하위 클래스에서 모든 추상메서드를 구현해야만 비로소 완전한 설계도로 취급될 수 있다.

 

 

 

*참고* 추상 메서드란? 구현부(몸통{ })가 없는 메서드이다. 추상메서드는 하나의 공통된 개념을 가진 기능을 하위 클래스마다 다르게 구현 될 것으로 예상되는 경우에 사용한다.

 

*참고* 추상 클래스는 추상 메서드와 상수 멤버만 가질 수 있는 인터페이스와는 다르게, 일반적인 필드와 생성자도 포함할 수 있다.

 

예시

- 13  class에만 abstract 키워드 붙은 것은 모든 추상메서드 구현이 완성되지 않았기 때문이다.

(stop() 메서드가 구현되지 않았다.)

 

즉, 미완성 설계도 기반으로 설계도를 만들었지만 모든 추상 메서드를 구현한 '완전한 설계도'가 아니기 때문에, 이 또한 결국 미완성 설계도이므로 abstract 키워드를 붙여주어야 한다.

 

- 8 줄과 같이 추상클래스의 추상 메서드를 모두 구현해야만 abstract 키워드 생략이 가능한 것. 

 


추상 클래스의 주요 특징과 장점

 

1. 추상 메서드

  • 추상 메서드는 선언만 되어 있으며, 구체적인 동작은 자손 클래스에서 오버라이딩을 통해 구현해야 한다.
  • 이로써 메서드의 동작을 표준화 하면서, 자손 클래스마다 다른 동작을 정의할 있다.

 

2. 강제성과 일관성

  • 추상 클래스를 사용하면 자손 클래스들이 반드시 상위 클래스의 모든 추상 메서드를 구현해야 한다.
  • 이는 일관성 있는 메서드 구현을 유도하며, 코드의 품질을 높일 있다.

 

3. 추상 클래스의 인스턴스화 제한

  • 추상 클래스는 객체를 직접 생성할 없다. (인스턴스 생성 불가)
  • 이는 추상 클래스를 사용자에게 완전한 클래스가 아닌 뼈대 구조 역할을 강조하는데 도움을 준다.

 

4.상속과 다형성 강화

  • 추상 클래스는 상속을 통한 다형성을 강화한다.
  • 추상 클래스를 상속받은 자손 클래스에서는 추상 메서드 오버라이딩을 함으로써 다양한 동작을 수행할 있다.
반응형

'Java' 카테고리의 다른 글

객체 지향 설계의 기본 :: 역할과 구현의 분리  (0) 2023.09.25
익명 객체(Anonymous Object)  (0) 2023.09.04
클래스와 객체, 변수  (0) 2023.08.28
인스턴스와 변수  (0) 2023.08.09
객체지향 프로그래밍(OOP)  (0) 2023.08.09