关于java接口的问题

时间:2008-10-26 17:29:57

标签: java ruby

假设我有以下ruby代码:


def use_object(object)
  puts object.some_method
end

并且,这适用于任何响应 some_method 的对象,对吧?

假设存在以下java接口:


interface TestInterface {
   public String some_method();
}

我是否正确地认为接口是java实现相同功能的方式(唯一的区别是参数的类型是 TestInterface )?

6 个答案:

答案 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中编程,你想要重新考虑使用更多语言习语的方法。