추상 클래스

쪼개발자·2024년 6월 21일

자바 정복

목록 보기
7/8

추상클래스란?

  • 미완성 메서드를 가지고 있는 클래스 (=미완성 설계도)
  • 여러 클래스에서 공통적으로 사용될 수 있는 부분을 추상클래스로 작성할 수 있다.
abstract class Player {
	abstract void play(int pos); 
    abstract void stop();
}

특징 - 추상클래스는 인스턴스 생성 불가

Player p = new Player(); // 에러 발생

  • 이렇게 쓸 수 없다는 것.

그렇다면 추상클래스를 왜 쓸까요?

  • 다른 클래스 작성에 도움을 주기 위해서.
  • 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능
class AudioPlayer extends Player {
	void play(int pos) { ... }
    void stop() { ... }
}

AudioPlayer ap = new AudioPlayer();   // OK

= 이렇게 상속을 받고 써줘야 인스턴스 생성 가능

추상 메서드란?

  • 미완성 메서드. 구현부가 없는 메서드
  • 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우 사용함
  • 반드시 다 구현해야 하는건 아님
  • 일부만 구현하는 경우? 아래처럼 abstract를 써줘야함
  • 추상 클래스도 생성자가 있어야 함
abstract class AbstractPlayer extends Player {
	void play(int pos) { ... }
    
    // stop이 구현 안되어있으므로 클래스에 abstract써줘야함
}

예제.

abstract class Player {
	boolean pause;
    int currentPos;
    
    Player() {
    } // 생성자 있어야함
    
    abstract void play(int pos); // 추상메서드
    abstract void stop(); //추상 메서드
    
    void play() {
    	play(currentPos);
    }
}

사용하려면?

  • 위 추상클래스를 상속받는 자손을 구현하여 추상 메소드를 구현하고, 자손 객체를 생성한 후 play를 호출하면 됨.

AudioPlay라는 객체가 Player로 상속받아서 사용했다면
Player p = new AudioPlayer(); 이렇게 사용가능. - 다형성!!! Polymorphism

0개의 댓글