我如何使用Graphics - 一个抽象类

时间:2016-03-16 20:29:36

标签: java jpanel abstract

我想知道java.awt.Graphics是如何工作的,我通过NetBeans访问了源代码 我注意到Graphics是一个abstract类,我使用的所有函数都是abstract函数
这让我成为了一个问题,我怎样才能使用Graphics? 我的意思是,Graphics是一个abstract类,我在JPanel中使用Graphics对象。
它是如何工作的?如何在不使用实现Graphics的类的情况下将它作为抽象类使用?

2 个答案:

答案 0 :(得分:4)

您无法直接使用抽象类的实例。像Graphics这样的抽象类无法实例化;只有具体的子类才可以(Graphics有两个,DebugGraphics和Graphics2D)。在JPanel的情况下,你在paintComponent()中得到的Graphics参数实际上是Graphics2D的一个实例(你可以通过强制它来检查它)。 Graphics2D类提供了Graphics中抽象方法的实现。

答案 1 :(得分:0)

Graphics2D 也是一个抽象类。我的理解是它是 Graphics2D 的具体子类的对象。我们不需要知道那个类的名称……只需要知道它实现了其抽象父/祖父类的抽象方法:Graphics2D 和 Graphics。 例如,传递给paintComponent 的Graphics2D g 对象,例如,不是Graphics2D 类型的对象,除了在继承上下文中:g 是类型???的对象。它扩展了Graphics2D,所以它是一个???类型的对象,它是一个Graphics2D,它是一个Graphics。 我不是专家,但这是我的理解。