Clases y métodos abstractos
Una clase abstracta (abstract) es una clase de la que no se pueden crear objetos. Su utilidad es permitir que otras clases deriven de ella, proporcionándoles un marco o modelo que deben seguir y algunos métodos de utilidad general. Las clases abstractas se declaran anteponiéndoles la palabra abstract, como por ejemplo,
public abstract class Geometria { … }
Una clase abstract puede tener métodos declarados como abstract, en cuyo caso no se da definición del método. Si una clase tiene algún método abstract es obligatorio que la clase sea abstract. En cualquier sub-clase este método deberá bien ser redefinido, bien volver a declararse como abstract (el método y la sub-clase).
Una clase abstract puede tener métodos que no son abstract. Aunque no se puedan crear objetos de esta clase, sus sub-clases heredarán el método completamente a punto para ser utilizado.
Como los métodos static no pueden ser redefinidos, un método abstract no puede ser static.
Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra