추상 클래스

추상 클래스 (abstract class)

  • 미완성 설계도. 미완성 메서드를 갖고있는 클래스
  • 몸통 {} 이없는 미완성 이면
  • 메서드와,클래스앞에 abstract 라 붙여야한다

abstract class Player{ //추상 클래스 (미완성클래스)
    abstract void play(int pos);  //추상 메서드 ( 몸통 {} 이없는 미완성 메서드)
    abstract void stop();        // 추상메서드

}

  • 다른 클래스 작성에 도움을 주기위함 .인스턴스생성불가 미완성 설계도이기때문 > 제품생산불가

      Player p = new Plyer(); // 에러 추상클래스면 >  인스턴스생성불가 
    
  • 상속을 통해 추상메서드를 완성해야 인스턴스 생성가능

      class AudioPlayer extends Player{
          void play(int pos) {}  //추상메서드를 몸통 {} 구현 , 구헌부 
          void stop() {}         //몸통 만들기
      }
    
      AudioPlayer ap = new AudioPlayer(); // 인스턴스생성 가능! 
    
  • 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는경우!

      abstract class AbstractPlayer extends Player {
          void play(int pos) { } // 추상메서드를구현 <1개만 구현했다  , 2개를 상속받았지만 , 그래서 미완성이다 , 그래서 클래스앞에 abstract 를붙인다 
          //abstract void stop(); 보이지않지만 존재하기때문에 미완성이다 
      }
    

-클래스들의 공통부분을 뽑아서 추상클래스로 작성하자 > 코드 간결 -여러종류의 클래스를 배열에 담아서 한번에 이동 가능 > 다형성의 장점

생성자 를 놓치지말자 생성자는 객체를 생성하기 위한 특별한 메서드이다 !

추상화 < > 구체화

  • 추상화된 코드는 구체화된 코드보다 유연하다. 변경에 유리하다

GregorianCalendar cal = new GregorianCalendar(); // 구체적 . 명확. Calendar cal = calendar.getInstance(); // 추상적 . 불분명 .

추상화 장점 : 애매하게 적어놔야 유연하게 쓸수있다

Categories:

Updated:

Leave a comment