따라서, 여러 구현 클래스가 공통된 기능이 있을때 여러 클래스를 대표하는 상위 타입을 도출할 수 있다.
여러 구현 클래스가 공통된 기능을 가진 하나의 상위타입으로 묶인다.
-> 그 상위타입은 다형성을 갖는다. (여러 하위타입의 모습)
-> 공통된 기능이 추상화된다.
추상화와 다형성은 연결된다!
인터페이스로 주로 구현함. 기능에 대한 의미를 제공하고 구현은 제공하지 않음.
추상 타입은 구현을 감춤.
기능의 구현이 아닌 의도를 더 잘 드러낸다.
어떤 이점이 있나?
추상타입을 사용하면 콘크리트 클래스들을(기능이 다구현된 클래스) 대표하여 메소드를 호출할수 있고
그 메소드의 기능이 수정되어도 추상타입을 사용한 코드에는 변화가 없다!
각각의 콘크리트 클래스의 기능을 수정하거나 추상타입을 구현한 새클래스를 추가하면 된다!
결과적으로 사용대상을 쉽게 변경할 수 있다.
하지만,
추상화를 잘하려면,