抽象方法意味着它没有默认的实现,一个实现类将提供细节。
基本上你会有
class AbstractObject {
public abstract void method();
}
class ImplementingObject extends AbstractObject {
public void method() {
doSomething();
}
}
所以,这正是错误所在:你的抽象方法不能有一个正文。
你会这样做的原因是如果多个对象可以共享一些行为,但不是所有的行为。
一个非常简单的例子就是形状:
你可以有一个通用的图形对象,它知道如何重新定位本身,但是实现类实际上是自己绘制的。
(这是从我上面链接的网站取得)
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() {
...
}
}