Clases Abstractas


Una clase que declara la existencia de métodos, pero no la implementación de dichos métodos, se considera una clase abstracta.

Una clase abstract nos permiten crear “métodos generales”, que recrean un comportamiento común, pero sin especificar cómo lo hacen. A nivel de código tienen por particularidad que algunos de sus métodos no tienen “cuerpo de declaración”, ¿qué quiere decir esto? no tienen las llaves {} ni código dentro de ellos y deben estar precedidos por la palabra clave abstract. Si una clase contiene uno o más métodos abstractos está clase debe ser abstracta.

Ejemplos: 

a)


b) Figura es una clase abstracta (nombre en cursiva en UML) porque no tiene sentido calcular su área, pero sí la de un cuadrado o un círculo. Si una subclase de Figura no redefine area(), deberá declararse también como clase abstracta.




Reglas básicas de este tipo de clases:


  • Como ya he mencionado, una clase se declara abstracta si tiene algún método abstracto.
  • Una clase abstracta no puede crear objetos, es decir, no podemos utilizar "new" para una clase abstracta, ya que tiene métodos que no están definidos.
  • Una clase abstracta no puede ser a la vez "final".
  • Si una clase hereda de una clase abstracta, deberá de sobrescribir todos los métodos abstractos, si no es así, la clase que hereda deberá ser pasada a abstracta.
  • Una clase abstracta puede llevar métodos NO abstractos, pero solo con que exista un método abstracto, la clase deberá ser pasada a abstracta.
  • Como los métodos estáticos no pueden ser redefinidos, un método abstracto no puede ser estático.
  • Una clase abstracta si puede tener constructores. Como sabemos, no es posible crear objetos de una clase abstracta, pero de una clase, la cual herede de una clase abstracta, si se pueden crear objetos, y como sabemos cuándo creamos un objeto de una clase que hereda, la primera llamada de su constructor es una llamada al constructor de la clase "padre", lo que permite que, aunque no cree un objeto, si se pueda utilizar su constructor.

Resultado de imagen para abstract programming

Comentarios

Entradas más populares de este blog

Interfaces

Herencia