为什么我们在java中使用具体的clases?

时间:2016-01-13 06:26:09

标签: java

为什么我们在java中使用具体类? 我已经尝试了很多搜索正确的理由,但我发现的只是抽象类和具体类之间的比较。 我想知道在什么样的条件下我们需要创建具体的类。

1 个答案:

答案 0 :(得分:2)

抽象类旨在用作要派生的其他类的基础。我们派生的具体类应该为未在基类(抽象)类中实现的每个方法提供实现。

我们必须使用具体类而不是抽象类,因为如果你可以实例化抽象类,那么就有可能调用一个尚未实现的方法。

这是一个例子。我们假设我们有以下Shape类:

public abstract class Shape {

    private Point center;

    public Shape(Point p) {
       this.center = p;
    }

    public abstract void draw();

    public void erase() {
        setColor(backgroundColor);
        draw();
        setColor(foregroundColor);
    }
}

在这个例子中,我们不知道如何绘制Shape,因为我们并不确切知道形状是什么样的!我们知道,如果我们在用于绘制的路径上绘制背景颜色(在擦除方法中),那么我们将能够将其更改回背景颜色。一旦我们知道了实际的形状模式,那么我们就可以在一个新的具体类中扩展

那么为什么要使用它而不是继承呢?主要原因(在本例中)是因为我们想在擦除方法中使用draw方法。如果我们没有抽象方法并且只有擦除,我们将无法调用draw方法,影响我们的程序设计,这非常简单和有用。