Una clase abstracta permite definir métodos evitando implementarlos, dejando esa tarea a las subclases. Cuando se crea una clase abstracta se da por sentado que se obliga a heredar, esto es debido a que una clase abstracta no puede crear objetos por si mismo.

Características

Representación UML

Para representar una clase abstracta se escribe el nombre en letra cursiva. Esto mismo ocurre para las funciones abstractas.

figuras
FiguraRegular: una clase abstracta

Código

Un ejemplo de clase abstracta
https://gist.github.com/jeavila/1d3c86dd5ba5bd1ba75f960df03be70a

Clase derivada.

https://gist.github.com/jeavila/48baafc6a45aa8ca8e5b8586d4ad24a9