Абстрактные методы означают, что для него нет реализации по умолчанию, и реализующий класс предоставит подробности.
По сути, у вас будет
abstract class AbstractObject {
public abstract void method();
}
class ImplementingObject extends AbstractObject {
public void method() {
doSomething();
}
}
Таким образом, это в точности как состояния ошибки: у вашего абстрактного метода не может быть тела.
На сайте Oracle есть полный учебник по адресу: http://download.oracle.com/javase/tutorial/java/IandI/abstract.html
Причина, по которой вы будете делать что-то подобное, заключается в том, что несколько объектов могут иметь общее поведение, но не все поведение.
Очень простым примером будут фигуры:
Вы можете иметь общий графический объект, который знает, как перемещать себя, но реализующие классы на самом деле будут рисовать себя.
(взято с сайта, на который я ссылался выше)
abstract class GraphicObject {
int x, y;
...
void moveTo(int newX, int newY) {
...
}
abstract void draw();
abstract void resize();
}
class Circle extends GraphicObject {
void draw() {
...
}
void resize() {
...
}
}
class Rectangle extends GraphicObject {
void draw() {
...
}
void resize() {
...
}
}