这个问题不仅涉及Java,还涉及另一种面向对象的语言。我设计了一个简单的UI库,它有一个名为Drawer
的特殊接口,它包含抽象方法,用于在我们可以设置像素的某个图形表面上绘制控件和基元。它旨在建立在一些简单的图形平台的顶部。而就目前而言,我使用的是AWT绘图引擎。
问题是我创建了类AWTDrawer
,它扩展了java.awt.Canvas
并实现了Drawer
,这是一个命名冲突:两个祖先都有SetColor
,getColor
,{{1 }} 方法。我怎样才能确定我想要使用的祖先方法?
答案 0 :(得分:3)
这通常是您设计中的错误。
根据您的说明,您已通过扩展Drawer
课程与java.awt.Canvas
课程之间的是关系。
您似乎确实希望具有关系。
要解决此问题,请保留本地java.awt.Canvas
实例变量,而不是扩展Canvas
,并在Drawer
类中使用它。
答案 1 :(得分:1)
我会通过使用所选祖先的完全合格名称来实现。
而不是仅仅打电话
方法名
您尝试类似:
java.package.subpackage.class.method
其他语言,如C#,同样的想法,但他们称之为命名空间