Java - 추상 클래스 (abstract class), 추상 메서드

춤추는개발자·2022년 11월 23일
0

Java 정리

목록 보기
17/59

추상 클래스

  • 미완성 설계도,미완성 메서드를 가지고 있는 클래스를 추상 클래스라고 한다.
  • 다른 클래스 작성에 도움을 주기 위한 것, 인스턴스 생성이 불가능 하다.
  • 상속을 통해 추상 메서드를 완성(구현)해야 인스턴스 생성이 가능하다.

추상 메서드

  • 미완성 메서드, 추상 메서드( {} 구현부가 없는 메서드 )
  • abstract 리턴타입 메서드이름();로 작성
  • 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우에 사용 합니다.
  • 추상 클래스내에 정의된 추상 메서드를 상속 받은 클래스가 추상 메서드를 모두 구현하지 않는다면 클래스 앞에 abstract를 붙여줘야 한다.

추상 클래스, 추상 메서드 이용하는 예시 코드

abstract class Player{ // Player 추상 클래스
    abstract void play(int pos); //  play 추상 메서드
    abstract void stop(); // stop 추상 메서드
}

class AudioPlayer extends Player{
    void play(int pos){ // play 추상 메서드 구현
        System.out.println(pos+" 위치에서 재생 시작합니다.");
    }
    void stop(){ // stop 추상 메서드 구현
        System.out.println("재생을 일시정지 합니다.");
    }
}

public class JavaExercise_38 { // 추상 클래스, 추상 메서드
    public static void main(String[] args) {
       // AudioPlayer audioPlayer = new AudioPlayer();
        Player audioPlayer = new AudioPlayer(); // AudioPlayer 클래스가 Player 클래스를 상속 받았기 때문에 다형성을 활용해 Player 타입의
        audioPlayer.play(50);              // audioPlayer 참조변수로도 AudioPlayer 클래스의 멤버 사용 가능
        audioPlayer.stop();
    }
}
출력 결과 : 
50 위치에서 재생 시작합니다.
재생을 일시정지 합니다.

위의 코드는 Player 라는 추상 클래스를 만들고 클래스내에 play,stop 추상 메서드를 만든 후에 AudioPlayer 클래스가 추상 클래스 Player를 상속 받아 play,stop 추상 메서드를 구현하고 AudioPlayer의 인스턴스를 생성하여 구현한 메서드를 사용하는 코드 입니다. AudioPlayer 클래스가 Player 클래스를 상속 받았기 때문에 다형성을 활용해 Player 타입의 audioPlayer 참조변수로도 AudioPlayer 클래스의 멤버를 사용하는데 문제가 없는것을 확인 할 수 있습니다.

추상 클래스의 작성

  • 여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존클래스의 공통 부분을 뽑아서 추상클래스를 만든다.

0개의 댓글