사진이 참 추상적이죠?? 뭔 소리냐고요? 저도 몰라요.. 추상..... 어렵다 어려워
추상클래스의 경우 문법적인 특징이나, 객체 생성 등 이러한 특징이 중요한 것이 아닙니다,
도대체 무엇이 추상클래스이고 왜 사용하는지를 알아야 쉽게 사용할 것이라고 생각합니다.
저도 그랬기 때문이죠 ㅎㅎ
음 공부할 때 그럴 경우 있죠? 이유를 모르고 외우려니 더욱 어렵지만 이유를 알고 나니 느낌이 빡 왔던 기억 한 번쯤 있죠? 추상클래스가 딱 그 경우라고 생각합니다.
추상 클래스가 무엇일까?
추상 클래스는 공통적인 부분들을 포함하고 있는 클래스이다.
그것이 뭐냐 사람으로 예를 한 번 들어보자면
사람은 모두 같은 행동을 할 수 있다.
웃고, 울고, 용변을 보고
하지만 각각의 습관, 성격에 따라 그 행동들은 다른 모습으로 비춰진다.
사이코가 웃으면 미친 놈처럼 보이고 아이돌이 웃으면 너무 이쁘다.
아이돌/사이코 같은 사람이지만 다른 모습의 웃음을 가진다.
그러나 둘은 같은 행동을 했다. 바로 웃음
웃음은 인간에게 모두 공통적인 메소드이다.
추상 메소드는 이러한 공통적인 메소드를 담아 놓는 곳이다.
근데 이름이 왜 추상인것이냐?
추상적이다. 라는 말은 모두 알것이다.
만약 클래스에 웃다라는 메소드가 있다, 그리고 그 메소드를 사용하는 사람마다 다르게 웃을 것이다.
싸이코는 미친 것처럼 아이돌은 이쁘게 등등..
때문에 단순히 웃다라는 메소드는 추상적이라는 것이다.
누군가 사용하여 결과가 확정된 것이 아니라 사용하기 전 모두나 할 수 있는 추상적인 메소드를 담고 있기 때문에 추상 클래스인 것이다.
추상클래스가 무엇인지 이제 느낌이 조금 올 수 있다.
그렇다면 이걸 왜 사용할까?
- 시간절약
개발자가 되면 야근에 쫒긴다는 소리를 많이 들었다.
그 만큼 시간이 부족한데 추상 클래스를 만들어 실체 클래스로 오버 라이딩 한다면 우리는 엄청난 시간을 절약 할 수 있을 것이다!!!
- 규격에 맞는 코드
개발자의 꽃은 협업이라고 개인적으로 생각하는데 만약 공통된 메소드 조차 모두가 다르게 만든다면 그 현장은 과연 어떻게 될까? 아마 대박 깨지던가 야근에 시달릴 것이다.
사공이 많으면 배가 산으로 가는 것처럼 규격화된 코드를 추상 클래스에 정해놓아야 한다.
- 유지보수 효율의 증가
만약 한번구매 라는 메소드를 만들어 코드에 집어 넣어놨다. 이 메소드로 잘 서비스를 하는 도중 갑자기 이슈가 발생 해 메소드를 바꿔야 하는 상황이 생기면 이 한번구매 메소드는 한 번만 구매할 수 있도록 짜놓았기 때문에 지우고 다시 짜야 하는 상황이 발생한다.
하지만 추상 클래스의 구매하다라는 메소드를 오버라이딩 하여 사용한다면 유지보수 효율을 증가 시킬 수 있다.