1

这个问题不仅与Java有关,还与另一种面向对象的语言有关。我设计了一个简单的 UI 库,它有一个称为特殊接口的接口Drawer,其中包含用于在某些图形表面上绘制控件和基元的抽象方法,我们可以在其中设置像素。它旨在构建在一些简单的图形平台之上。就目前而言,我使用 AWT 绘图引擎。问题是我创建了AWTDrawer扩展java.awt.Canvas和实现的类,Drawer这是一个命名冲突:两个祖先都有SetColor, getColor,drawLine方法。我怎样才能确定我想使用什么祖先的方法?

4

2 回答 2

3

这通常是您设计中的错误。

根据您的描述,您已经通过扩展它实现了您的类和类之间关系。Drawerjava.awt.Canvas

看起来你很可能真的想要一段关系。

为了解决这个问题,而不是扩展java.awt.Canvas,保存一个局部Canvas实例变量并在你的Drawer类中使用它。

于 2018-06-01T13:35:22.227 回答
1

我会通过使用来自所选祖先的完整限定名称来做到这一点。

而不是只打电话

方法名

你尝试这样的事情:

java.package.subpackage.class.method

其他语言,如 C#,同样的想法,但他们称之为命名空间

于 2018-06-01T13:40:58.693 回答