为什么java.awt.Graphics类在java中是抽象的?

时间:2015-03-28 07:26:26

标签: java awt abstract-class

类java.awt.Graphics是抽象的。有没有正当理由呢 把它抽象化?

3 个答案:

答案 0 :(得分:4)

因为拥有无上下文的具体Graphics类没有意义。

Graphics类是抽象的,因此使用Graphics类的组件可以提供特定于组件的自定义具体实现,甚至是特定于平台的。

如果能够通过调用:

创建新的Graphics对象
Graphics g = new Graphics();

绘制到哪个绘制/填充方法?他们是如何实施的?他们的目的是什么?

使用Graphics类的每个类(示例包括:BufferedImageBufferStrategyImage)提供了在各自上下文中有意义的自定义实现。

例如,BufferedImage,顾名思义,可以利用主内存中维护的栅格,而VolatileImage可以直接绘制到VRAM中(特定于实现)。

使用(相对)隐藏的自定义实现的抽象类方法的原因构成了API概念的基础,允许您作为程序员编写可跨平台/修订版移植的代码,而不必担心具体细节底层实施。

答案 1 :(得分:2)

首先你应该知道抽象类的概念。当我们知道实现但不完全(部分)时。我们可以有具体的方法 以及抽象方法。例子是java.awt.Graphics,用户可以提供自己的方法,也可以提供java.awt.Graphics中定义的方法的具体实现。 请参阅此处的文档http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html

答案 2 :(得分:1)

  

什么是抽象类?

实际上抽象类是一个声明为abstract的类 - 它可能包含也可能不包含抽象方法。抽象类不能被实例化,但它们可以被子类化。

Graphics类是所有图形上下文的抽象基类,允许应用程序绘制到在各种设备上实现的组件以及屏幕外图像。