38) 추상클래스의 작성2
1. 작성방법1: 공통부분을 Unit클래스로
Tv가 3개 있다. 각 티비는 켜기, 끄기, 채널 돌리기의 세 가지 공통점(■)이 있는데, 각각 하나씩 다른 기능(●▲♥)이 있다.
추상클래스1편에서 클래스마다 공통적인 요소를 매번 작성하면 불편하기 때문에 Unit클래스에 공통적인 요소를 넣으라고 했었다. 아래 주소 참고.
https://feastforall.tistory.com/68
공통적인 부분을 하나의 클래스□로 작성하고 그걸 상속받아 각각 추가 기능을 넣어주면 코드가 간편해진다.
게다가 추가 클래스를 넣고 싶으면 공통 클래스에서 추가 기능(♣)만 작성하면 되므로 정말 편리하다.
혹여나 공통적인 기능(■)이 업데이트돼서 공통기능(♠)이 바뀌면 공통클래스만 바꿔주면 되므로 더더욱 편리.
중복제거, 관리용이, 사용 편리의 장점이 있다.
2. 작성방법2: 단계별로 만들기
추상클래스를 계속 상속받아서 점점 구체적으로 작성하는 방법이 있다. 추상클래스를 하나만 완성하는 게 아니라 완성해가는 단계별로 만드는 방법이다. 그렇게 하면 중간단계에서 상속받아 또 다른 클래스를 만들 수 있는 장점이 있다.
3. 추상화의 의미
추상화 <->구체화
'불명확 <->명확'이라고 볼 수 있다. 근데 명확한 게 좋지 않나? 하지만 불명확이 때론 좋을 때도 있다.
추상화된 코드는 구체화된 코드보다 유연하다. 변경에 유리하기 때문.
GregorianCalendar cal = new GregorianCalendar(); //구체적
Calendar cal = Calendar.getInstance(); //추상적
GregorianCalendar는 GregorianCalendar의 인스턴스를 생성해야 하기 때문에 구체적이고,
Calendar는 Calendar의 getInstance() 메서드가 여러 클래스에 추상메서드로 있을 수 있으므로 추상적이다.
*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다*
'back-end > JAVA' 카테고리의 다른 글
40) 인터페이스와 다형성 (0) | 2021.06.23 |
---|---|
39) 인터페이스의 선언, 상속, 구현 (0) | 2021.06.17 |
37) 추상클래스의 작성1 (0) | 2021.06.15 |
36) 추상클래스(abstract class), 추상메서드(abstract method) (0) | 2021.06.10 |
35) 매개변수의 다형성(2)-하나의 배열로 여러 종류 객체 다루기 (0) | 2021.06.10 |