返回的接口对象如何声明其方法

时间:2012-09-05 08:42:52

标签: java interface

这感觉就像一个愚蠢的问题,但它让我更加恼火,因为我不明白方法的声明在哪里。在我的代码中,我可以做一些事情(显然这是一个伪代码)

ResultSet rs = DB.getConnection.sendSQL(select * from [table])

我理解发送SQL会返回'结果集',虽然'ResultSet'只是一个接口,但返回的对象会实现该接口。

我的问题是返回的对象如何实现该接口?从我读到的界面只能定义一个方法签名,而不是一个完整的函数。

那么函数定义在哪里?显然不在ResultSet界面中!我是否正确理解这是数据库驱动程序的工作? (我想我可能刚刚回答了我自己的问题)。

我可以用一个功能齐全的方法编写一个接口吗?那么任何实现类是否会自动实现该方法,或者我只是通过调用'super'或其他东西来覆盖它?

我刚刚在SO上发现了另一个问题 How does abstract method of predefined interface like Connection, Statement etc. perform some task without having body? 这是一个完美的重复,但很多bette制定。一个很好的答案

3 个答案:

答案 0 :(得分:1)

  

我的问题是返回的对象如何实现该接口?

class ResultSetImpl implements ResultSet { ... }
  

从我读的界面只能定义一个方法签名,而不是一个完整的函数。那么函数定义在哪里?显然不在ResultSet界面中!

在返回的对象中。在点;;)

这是非常基本Java。

答案 1 :(得分:1)

实现接口的类负责声明接口中的所有方法,并在适当的地方实现这些方法的内部逻辑。

接口基本上是在说“你必须为此提供功能,但我不在乎你是如何的。你只需要输入这些类型并提供这种类型的输出“。您可以在该课程中实现从输入到输出的方式。

答案 2 :(得分:1)

让我们采取以下方案:

我们有一个界面:

public interface Expendable(){
  public void expend();
}

实现它的类:

public class MyClass implements Expendable(){
  public void expend(){
//Do something
}
}

另一个类在方法中返回一个实现我们接口的对象:

public class OtherClass(){
  public Expendable myMethod(){
   return new MyClass();
}
}

OtherClass myMethod返回一个对象(我们不知道它是Class只是通过查看实现Expendable接口的方法返回类型。当前的Expend方法是在myMethod返回的实际类中定义的。在这种情况下,如果您执行

,则调用该方法
new OtherClass.myMethod().expend();

是MyClass的支出方法。