Java abstract class

김국민·2025년 3월 6일

JAVA

목록 보기
14/21

추상 클래스 (Abstract Class)

클래스가 설계도라면, 추상 클래스는 미완성 설계도에 비유할 수 있다.
새로운 클래스를 작성할 때 바탕이 되는 클래스이고, 미완성된 메서드를 포함하고 있다는 뜻이다.

특징

  • 추상클래스로는 인스턴스를 생성 불가
  • 상속을 통해 자손 클래스에 의해서만 완성 가능

추상 클래스 선언하기

추상 클래스는 abstract 키워드를 사용하여 선언합니다.

abstract class 클래스이름 {
    // 멤버 변수, 메서드, 생성자 등
}

추상 메서드

메서드는 선언부와 구현부로 구성
선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 것이 추상 메서드

abstract 리턴타입 메서드이름();

추상클래스를 상속받는 자손 클래스는 조상의 추상 메서드를 모두 구현해야함
하나라도 구현하지 않는다면 자손클래스도 추상클래스로 지정해야함

abstract class Player{
	abstract void play(int pos);
    abstract void stop();
} //추상클래스
    
 class AudioPlayer extends Player{
 	void play(int pos){}
    void stop(){}
} //자손 클래스

abstract class AbstractPlayer extends Player{
	void play(int pos){}
}  // stop() 메서드는 구현하지 않음 -> AbstractPlayer는 여전히 추상 클래스

추상클래스 사용 이유

일반 클래스를 상속받아 오버라이딩을 하는 대신 추상 클래스를 상속하는 이유는
만약 일반 메소드로 구현한다면 사용자에 따라 해당 메소드를 구현할 수도 있고, 안 할 수도 있다.
하지만 추상 메소드가 포함된 추상 클래스를 상속받은 모든 자식 클래스는 추상 메소드를 구현해야만 인스턴스를 생성할 수 있으므로, 반드시 구현해야 된다.

위 내용들을 종합해 추상클래스를 왜 사용해야 되냐면?

  1. 공통 멤버의 통합으로 중복 제거
  2. 구현의 강제성을 통한 기능 보장
  3. 규격에 맞는 설계 구현

결과적으로

필드와 메서드 이름을 통일하여 유지보수성을 높이고 통일성을 유지할 수 있다.

참고자료

tcp school
자바의 정석 1권 추상클래스

profile
개발지망생

0개의 댓글