이게 책이 옛날 책인데 (GOF)
요새 객체지향 하면 다 이거 배운다.
그만큼 아주 효과적이여서 아예 abstract라는 명령어를 아예 DVE에서 제공을 해준다.
먼저 아예 추상적인 클래스를 정의해 주는거다.
그 다음 구체적인 내용들을 이 추상클래스를 상속받은 서브클래스들이 그 내용을 정의 해주는 거다.
이렇게 하면 엄청난 다형성이 생긴다.
예를 들면 동물의 추상적인 개념에서 개, 고양이, 말 같은 더 구체적인 객체를 위한 정의를 해준다.
동물이라는 추상 클래스에 bark()라는 추상 메소드를 정의 한 뒤, 각각의 서브 메소드 들이 overriding 하여 이를 구현하는 것이다.
이렇게 하면 인자로 Animal animal로 받아서 animal.bark()하면 알아서 다 각자의 소리를 낸다.
비슷한데 분류적인, 그런
아니면 UserInterface라는 추상클래스에 PhoneInterface와 ComputerInterface 등으로 상속 해도 편리. 분류하는.
예를 들어 게임의 특징들을 소개하는. 그런 한 표에다 보여주는.
표의 특징열에 이름, 이미지, 장르 등이 있다면
특징이라는 추상 클래스에 이름 : 특징, 이미지 : 특징, 장르 : 특징에 표에 정보를 삽입할 수 있는 .insertTable()이라는 추상메소드를 상속받아 각각 정의.
아무래도 내가 생각하는 가장 장점은 일관성.
단점은 추상 클래스가 변경되면 모든 서브클래스도 영향을 받음.