强制客户端类实现子类的接口?

时间:2014-05-23 00:34:55

标签: java interface javafx

我有一个自定义“小部件”(自定义控件),任何类可以在其布局中使用。但是,如果他们要使用此小部件,则必须实现其界面。这个小部件有一个名为WidgetInterface的接口,只有一个名为handleAction()的方法。

如果Parent类想要使用这个小部件,它应该怎么做呢?

构造Widget并将其自身的引用传递给它的构造函数?

Widget newWidget = new Widget(this);

使用类型参数构建Widget本身?

Widget<Parent> newWidget = new Widget<Parent>(this);

widget类必须检查以确保父类使用instanceof或泛型实现其接口。 。

当然,父类可以选择如何处理handleAction()。

1 个答案:

答案 0 :(得分:0)

你的第一个构造函数是对的。

这是一个“多态”的例子,它与被引用的对象有关,好像它是它所扩展的类的对象或它实现的接口。在您的示例中,使用Widget的类实现了WidgetInterface接口,这意味着它的实例也是WidgetInterface的实例。网上有很多信息,StackExchange在这里详细解释了这一点,所以我不再赘述了。首先查看the java tutorial on inheritance,特别是关于多态的部分。

在Widget中将构造函数定义为

public Widget(WidgetInterface actionhandler)

然后你可以传入任何类型的对象,只要它实现WidgetInterface。