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