[자바의 정석] 추상클래스

강신현·2022년 6월 2일
0

자바의 정석

목록 보기
14/15

✅ 추상클래스 ✅ 추상메서드 ✅ abstract

추상클래스

추상메서드(미완성 메서드)를 포함하고 있는 클래스

  • abstract를 붙여 표시한다.
    이를 통해 이 클래스에는 추상메서드가 있으니 상속을 통해 구현해주어야 한다는 것을 알 수 있다. (오버라이딩)
  • 추상클래스로 인스턴스를 생성할 수 없다. 상속을 통해 자손클래스에 의해서만 완성될 수 있다.
  • 새로운 클래스의 조상클래스로서 중요한 의미가 있다. 새로운 클래스를 작성할 때 아무 것도 없는 상태에서 시작하는 것보다는 완전하지 못하더라도 어느 정도 틀을 갖춘 상태에서 시작하는 것이 낫기 때문이다.

추상메서드

선언부만 있고 구현부(body)가 없는 메서드
(즉, 설계만 해놓고 실제 수행될 내용은 작성하지 않은 상태)

abstract class Player{
	int currentPos;
    
    Player(){ // 추상클래스도 생성자가 있어야 함
    	currentPos=0;
    }
    
    abstract void play(int pos); // 추상메서드
    abstract void stop(); // 추상메서드
    
    void play(){ // 일반메서드
    	play(currentPos); // 추상메서드 호출
    }
}
  • 클래스마다 메서드를 따로 정의할 수도 있지만, 굳이 추상클래스로 껍데기만 만들어놓은 이유는, 비디오나 오디오 클래스 등의 플레이어 모두 play, stop 메서드가 필요하지만 조금씩 다를 뿐, 어차피 필요하기 때문에 다른 클래스를 작성하는데 도움을 주기 위해서이다.
  • 일반메서드가 추상메서드를 호출 할 수 있다.
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); // 추상메서드 "일부만" 구현
}
  • 꼭 필요하지만 자손마다 다르게 구현될 경우에 사용
  • 추상클래스를 상속받는 자손클래스에서 오버라이딩을 통해 조상인 초상클래스의 초상메서드의 구현부를 완성해야 한다.
    일부만 구현할 경우에는 자손클래스 또한 추상클래스로 지정(정의)해야 한다.

- 작성

추상클래스를 만드는 방법은 두가지가 있다.

  1. 공통적으로 사용될 수 있는 클래스를 바로 작성한다.
  2. 이미 작성된 기존 클래스들의 공통적인 부분을 뽑아서 추상클래스를 만들고, 기존 클래스들이 이를 상속하도록 한다.
profile
땅콩의 모험 (server)

0개의 댓글