【发布时间】:2018-06-01 13:28:04
【问题描述】:
这个问题不仅是关于 Java 的,也是关于另一种面向对象的语言的。我设计了一个简单的 UI 库,它有一个名为 Drawer 的特殊接口,其中包含用于在某些图形表面上绘制控件和基元的抽象方法,我们可以在其中设置像素。它旨在构建在一些简单的图形平台之上。就目前而言,我使用 AWT 绘图引擎。
问题是我创建了类AWTDrawer,它扩展了java.awt.Canvas 并实现了Drawer,这是一个命名冲突:两个祖先都有SetColor、getColor、drawLine 方法。如何确定我要使用什么祖先的方法?
【问题讨论】:
-
创建接口时,最好以 I 开头名称,这样您一眼就知道它是一个接口(例如 IDrawer)。
-
如果
AWTDrawer扩展java.awt.Canvas,那么后者必须是一个类。除非方法的签名相同,否则如果您的实例声明为Drawer类型应该没问题。
标签: java oop inheritance multiple-inheritance library-design