추상 클래스
추상 클래스 (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(); // 추상적 . 불분명 .
추상화 장점 : 애매하게 적어놔야 유연하게 쓸수있다
Leave a comment