A menudo existen clases que sirven para definir un tipo genérico pero que no tiene sentido instanciar (crear objetos de ella).
Estas clases pueden estar siendo usadas simplemente para agrupar bajo un mismo tipo a otras clases, o para contener código reutilizable, o para forzar un API a sus subclases…
La clases se definen como abstractas mediante la keyword: abstract.
Métodos abstractos
Además de clases abstractas, también podemos tener métodos abstractos.
Una clase abstracta significaba que tenía que ser heredada. No podía ser instanciada.
Un método abstracto significa que tiene que ser sobrescrito. No está implementado.
Una clase con uno o varios métodos abstractos tiene que ser declarada abstracta.
No obstante una clase abstracta no tiene porque tener métodos abstractos.
Los métodos se definen como abstractos mediante la keyword: abstract.
Declaración de un método abstracto: modif_acceso abstract tipo_retorno nombre([tipo param,…]);