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.
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.