方法返回类型为接口是怎么回事?新手的疑惑,急!!!谢了!

02-10-22 sam_java
    

我的理解:

1,接口中没有实现具体方法

2,接口不能实例化

我的问题是,在没有类实现该接口的时候,为什么程序中能够调用某方法返回该接口并且执行该接口中定义的方法?

例如petstore112中:

requestMappingsURL = getServletContext().getResource("/WEB-INF/xml/requestmappings.xml").toString();

其中 getServletContext()是 Returns a reference to the ServletContext object in which the servlet is executing.

getResource()是ServletContext 中声明的方法

但是,我看过java帮助,ServletContext是interface,为什么这里可以返回一个ServletContext对象的reference?

这是怎么回事?我彻底糊涂了,本来就是新手:-(

请指教,谢谢

    

1
why10k
2002-10-23 13:14

这个问题挺难回答的,我也是新手.不过我觉得你最好把这个当成语言的规定好了.你可以返回一个对象,用该对象实现的接口方法访问该对象.就是这样.你能提出这种问题真不简单.

banq
2002-10-23 14:12

你如果研究设计模式后,就对接口有深入了解。

接口是对类的概括,在传统概念中,我们喜欢用事物的ID来代替这个事物,至少设计数据库时是这样,这就是一个以抽象概括的概念代替具体事物的处理方法。接口可以看成这样一个方法的产物。

只要接口中有这个方法,当然就能直接用接口.方法()调用,当然接口必须要有实现,有时你没看到实现,这是API的一个特征,你只要知道如何通过接口调用就可以,不必了解如何实现,但你要知道它肯定是有实现的。

sam_java
2002-10-24 01:12

谢谢板桥先生和道友的回复。

不知我理解的对不对:

实际上我们可以用两种方式访问到某一方法,

1)通过interface

2)通过实现该interface的类实例。

不管哪种方法,实际上访问的都是同一个对象。

luwenhua
2002-10-25 04:18

我这里有一个例子。仅仅说明问题。

luwenhua475vb605Pa.java