繁体   English   中英

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

[英]How can I use Graphics - an abstract class

我想知道java.awt.Graphics是如何工作的,所以我通过 NetBeans 访问了源代码。 我注意到 Graphics 是一个抽象类,我使用的所有函数都是抽象方法。

这让我想到,我该如何使用 Graphics?

我的意思是,Graphics 是一个抽象类,我在 JPanel 中使用 Graphics 对象。 它是如何工作的? 如何在不使用实现 Graphics 的类的情况下将它用作抽象类?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM