Clases abstractas

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

  • Las clases definidas como abstractas no se pueden instanciar.
  • Un método abstracto solo puede estar contenido en una clase abstracta.
  • Una clase abstracta, en PHP, no necesita contener métodos abstractos.
  • Una clase derivada puede evitar la implementación de un método abstracto si dicha clase es abstracta también.
  • Cuando se hereda de una clase abstracta, todos los métodos definidos como abstractos en la declaración de la clase base deben ser definidos en la clase derivada.
  • Los métodos definidos como abstractos simplemente declaran la firma del método, pero no pueden definir la implementación.
  • Por otra parte, las firmas de los métodos tienen que coincidir, es decir, la declaración de tipos y el número de argumentos requeridos deben ser los mismos.
  • Para definir clases y métodos abstractos utilizamos la palabra reservada: abstract.

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