假设我有以下ruby代码:
def use_object(object)
puts object.some_method
end
并且,这适用于任何响应 some_method 的对象,对吧?
假设存在以下java接口:
interface TestInterface {
public String some_method();
}
我是否正确地认为接口是java实现相同功能的方式(唯一的区别是参数的类型是 TestInterface )?
答案 0 :(得分:1)
你是对的,除了你不能在Java接口中定义函数体,只能定义原型。
接口是在Java中实现伪多重派生的唯一方法,因为普通的类派生只是简单的(只有一个父级)。
答案 1 :(得分:1)
不,未实现接口。你可以有多个实现。
界面看起来更像:
interface TestInterface {
public String some_method();
}
它可以在一个类中实现:
public class TestClass implements TestInterface {
public String some_method() {
return "test";
}
}
也许更多以不同方式实现此方法的类。实现接口的所有类都必须实现接口声明的方法。
使用接口时,由于Java是静态类型的,因此无法实现与Ruby示例完全相同的接口。
答案 2 :(得分:0)
Java接口定义实现类必须提供的方法签名。 JavaDoc非常详细地解释了这一切。
答案 3 :(得分:0)
在Java接口中,只能用于声明方法,而不能用于定义(实现)它们。只有类可以实现方法。但是类可以实现接口。所以你可以使用Adapter模式来实现你在ruby中所做的相同的事情。
答案 4 :(得分:0)
是的,但是只有当你想要将“具有some_method()的东西”抽象为一个单独的概念时。如果您只有一个具有some_method()的类,则无需指定接口,而use_object()的参数将是该类。
另请注意,在Java中,我们使用camelCase而不是underscore_separated名称。
答案 5 :(得分:-1)
看起来你正在尝试使用Java在Ruby中编程,你想要重新考虑使用更多语言习语的方法。