TIL_240215(1)

라미·2024년 2월 18일

TIL

목록 보기
15/25
post-thumbnail

추상 클래스 & 추상 메서드(abstrack)

추상 클래스

  • 미완성 메서드(추상 메서드)를 가지고 있는 클래스
  • 추상 클래스는 인스턴스 생성이 불가능 하다.
  • 상속을 통해 추상 메서드를 완성해야 인스턴스 생성이 가능하다.
  • abstract 키워드로 정의한다.
  • 추상 클래스 정의 : abstract class 클래스명{ }

📝예시

abstract class Player{
    void stop(){/*일반메서드내용생략*/};
    abstract void play(int pos); //추상 메서드 : 메서드 선언만 되어있고 내용은 구현되지 않은 것.
}

class AudioPlayer extends Player{ // 추상 클래스 상속
    void play(int pos){
        /*상속받은 추상 메서드 구현*/
    }
}

public static void main(String[] arga){
    Player p = new Player(); // 에러 - 추상 메서드 : 객체 생성 불가능
    AudioPlayer p2 = new AudioPlay(); // 추상메서드를 구현한 클래스 객체생성 가능!
}

추상 메서드

  • 미완성 메서드 : 선언부만 존재하고 구현부가 없는 메서드
  • abstract 키워드로 정의한다.
  • 추상 메서드 정의 : abstract 리턴타입 메서드이름();
  • 꼭 필요하지만 자손마다 다르게 구현될 것으로 에상 될 경우 사용한다

📝예시

abstract class Player{
    void stop(){System.out.println("재생 멈춤");};
    abstract void play(int pos); //추상 메서드 : 메서드 선언만 되어있고 내용은 구현되지 않은 것.
}

class AudioPlayer extends Player{ // 추상 클래스 상속 -> 일반 메서드와 추상메서드 모두 상속 받음
    void play(int pos){
        System.out.println(pos+"위치부터 play 합니다~")
    }
}

public static void main(String[] arga){
    // Player p = new Player(); // 에러 - 추상 메서드 : 객체 생성 불가능
    AudioPlayer ap = new AudioPlay(); // 추상메서드를 구현한 클래스 객체생성 가능!
    Player p = new AudioPlay(); // 다형성에 의해 객체 생성이 된다.(객체는 AudioPlay를 참조해서 생성했기 때문이다. 타입만 player)
    ap.play(100);
    ap.stop();
}

📜실행결과

"100위치부터 play 합니다"
"재생 멈춤"

추상클래스의 작성

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

0개의 댓글