본문 바로가기
back-end/JAVA

38) 추상클래스의 작성2

by 모두의 향연 2021. 6. 16.
728x90
반응형

38) 추상클래스의 작성2

 

1. 작성방법1: 공통부분을 Unit클래스로

 

추상클래스 설계도

Tv가 3개 있다. 각 티비는 켜기, 끄기, 채널 돌리기의 세 가지 공통점()이 있는데, 각각 하나씩 다른 기능()이 있다.

추상클래스1편에서 클래스마다 공통적인 요소를 매번 작성하면 불편하기 때문에 Unit클래스에 공통적인 요소를 넣으라고 했었다. 아래 주소 참고.

https://feastforall.tistory.com/68

 

37) 추상클래스의 작성1

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

feastforall.tistory.com

공통적인 부분을 하나의 클래스□로 작성하고 그걸 상속받아 각각 추가 기능을 넣어주면 코드가 간편해진다.

게다가 추가 클래스를 넣고 싶으면 공통 클래스에서 추가 기능()만 작성하면 되므로 정말 편리하다.

혹여나 공통적인 기능()이 업데이트돼서 공통기능()이 바뀌면 공통클래스만 바꿔주면 되므로 더더욱 편리. 

공통기능만 바뀌주면 됨

중복제거, 관리용이, 사용 편리의 장점이 있다. 

 

 

 

2. 작성방법2: 단계별로 만들기

계속 상속받아 편리하게

추상클래스를 계속 상속받아서 점점 구체적으로 작성하는 방법이 있다. 추상클래스를 하나만 완성하는 게 아니라 완성해가는 단계별로 만드는 방법이다. 그렇게 하면 중간단계에서 상속받아 또 다른 클래스를 만들 수 있는 장점이 있다.

 

 

 

3. 추상화의 의미

추상화 <->구체화

'불명확 <->명확'이라고 볼 수 있다. 근데 명확한 게 좋지 않나? 하지만 불명확이 때론 좋을 때도 있다.

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

 

GregorianCalendar cal = new GregorianCalendar(); //구체적

Calendar cal = Calendar.getInstance(); //추상적

 

GregorianCalendar는 GregorianCalendar의 인스턴스를 생성해야 하기 때문에 구체적이고,

Calendar는 Calendar의 getInstance() 메서드가 여러 클래스에 추상메서드로 있을 수 있으므로 추상적이다.

 

 

 

*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다*

728x90
반응형