No eh visto lo que dice el profe, pero voy a explicarlo lo mejor posible:
Un método abstracto es un método declarado pero no implementado, es decir, es un método del que solo se escribe su nombre, parámetros y tipo devuelto pero no su código.
Los métodos abstractos se escriben sin llaves {} y con ; al final de la declaración.
Por ejemplo:
public abstract double area();
Un método se declara como abstracto porque en ese momento (en esa clase) no se conoce cómo va a ser su implementación.
Por ejemplo: A partir de una clase Polígono se pueden derivar las clases Rectángulo y Triángulo.
Entonces clases derivadas usarán un método área. Podemos declararlo en la clase Polígono como método abstracto y dejar que cada clase lo implemente según sus necesidades.
Al incluir el método abstracto en la clase base se obliga a que todas las clases derivadas lo sobrescriban con el mismo formato utilizado en la declaración. Si la clase derivada no implementa el método abstracto que ha heredado, deberá ser declarada como abstracta.
Si una clase contiene un método abstracto se convierte en clase abstracta y debe ser declarada como tal.
bien otro ejemplo; clase abstracta hotel método calculo_superficie();
etonces si quieres crear un hostel implementas hotel, entonces te ves obligado a implementar el metodo calculo_superficie(); si quieres crear otro objeto como motel también implementas los métodos o propiedades de hotel. Puedes entender el por que cuando lees un poco de patrón de diseño, herencia y encastillamiento.