接口方法 - 实现与定义

时间:2014-04-23 15:14:42

标签: java interface

请解释为什么以下内容在Java(1.7)中无效。

有一个界面:

interface foo {
  mymethod(argument arg)
}

其中argument也是一个接口:

interface argument{}

argument的实现:

class someArgument implements argument{}

以及foo的实现:

class bar implements foo {
  mymethod(someArgument arg) {}
}

bar导致编译错误,因为mymethod未实现。无论如何要完成上述操作而不需要铸造?

谢谢!

1 个答案:

答案 0 :(得分:4)

mymethod()签名必须完全,如foo界面中所定义。

假设您有另一个实现baz的类(argument)。然后,mymethod(argument arg)签名将允许传递baz类型的参数。

但如果你保持这样:

class bar implements foo {
  mymethod(someArgument arg) {}
}

您将无法将baz个实例传递给mymethod,因为您违反了合同。

作为旁注,开发时应遵循naming conventions