返回子类型对象而不是接口所要求的超类型对象

时间:2011-06-25 01:58:23

标签: java interface

我有一个名为Node的类和另一个名为ClassicNode的类,它扩展了Node。现在我有一个由ClassicNode类实现的接口AgentInterface。界面声明必须有方法

Node selection();

如您所见,返回类型应为Node类型。但是在类ClassicNode中,我可以像这样实现它: -

ClassicNode selection(){
    //Code
}

这会满足界面吗? (因为ClassicNode继承了Node)

2 个答案:

答案 0 :(得分:5)

是;它被称为协变返回。但请注意,你不能用参数做同样的事情;他们必须完全匹配。

答案 1 :(得分:2)

那么,你为什么不做实验呢? 减少工作量。 你可以在方法的签名上添加注释@Override,然后尝试编译代码,如果成功,则意味着工作或失败。