Las clases se utilizan como base para crear una jerarquía en la que todas las clases comparten una parte de la interfaz. Una clase abstracta no se puede instanciar.

Clases abstractas

Los métodos abstractos no tienen funcionalidad ni implementación. Solo definen una parte de la interfaz que deben de implementar las clases de las que deriva

Ejemplo

Clase abstracta (no se puede instanciar):

abstract class Animal

La clase que extiende (esta sí se puede instanciar):

class Zorro extends Animal

De esta manera, conseguimos que la clase vehículo no pueda ser instanciada.