Java中关于interface的疑惑

OhGod 2003-11-19 04:10:10
好像接口并不可以做一个独立的实例
但是在javax.sql.connection ,java.sql.DriverManager 都可以以实例的形式出现。(在tomcat 做容器的时候)

这个到底怎么回事?

接口可以独立的,以实例的形式存在吗?
...全文
3509 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangry 2003-11-21
  • 打赏
  • 举报
回复
我觉得楼主 需要仔细看一下书 这样问一点没什么意义
hurt75 2003-11-21
  • 打赏
  • 举报
回复
一个类要实现一个接口用关键字implements后面跟接口的名字。并要在类里实现这个接口中的所有方法。你说的connect这种情况只是实例造型。并不是直接从接口实例化一个类出来。
OhGod 2003-11-21
  • 打赏
  • 举报
回复
总结:

Shrewdcat(丧邦&灵猫&潇说的对。不过getConnection()返回的是connection接口的引用,并不是一个对象。其实new myObject()返回的也是一个实例的引用。

关于tomcat中连接池的配置中所提到的dataSource是实现了datasource接口的class。如BasicDatasource。

over.
谢谢各位。
Shrewdcat 2003-11-21
  • 打赏
  • 举报
回复
首先可以肯定的是:
接口(interface)是不可能作为一个独立的实例那样被使用的。接口是没有实现的函数。只有继承该接口的对象,要实现接口中的函数。

至于兄弟提出的问题,答案应该是这样的:
DriverManager.getConnection()返回的是一个实例化的对象,该对象实现了connection接口
xiaomantoubaba 2003-11-21
  • 打赏
  • 举报
回复
看了这么多的回复才知道我对接口的掌握还是不够!
DDrddr 2003-11-20
  • 打赏
  • 举报
回复
看来是没人回答了,不懂啊
OhGod 2003-11-19
  • 打赏
  • 举报
回复
tsd3698(七夜) 也看看 请求支援
OhGod 2003-11-19
  • 打赏
  • 举报
回复
re:
晕~~~~~~~~~
DriverManager.getConnection()返回的是一个实例化的对象,该对象实现了connection接口啊,当然可以做这样的类型转换啊~~~~~~~

-------------------------------------------------

不过 public static Connection getConnection(String url) throws SQLException

这是api的doc 返回的是connection .并不是一个类的对象。
OhGod 2003-11-19
  • 打赏
  • 举报
回复
a!!!!!~~~~

终于记起来了!!!以前看书的时候没有实际用过,感觉不出来多态的好处,所以没印象。

这次得到几位兄台的指点,想起来了。!!

thx!!!!

iloveU all!
LeoYu 2003-11-19
  • 打赏
  • 举报
回复
老兄,这是多态的典型表现,把多态再过一遍吧!
tsd3698 2003-11-19
  • 打赏
  • 举报
回复
接口当然不可以实例化,如:connection conn=new connection(...)就是错误的。
但当一个类实现了此接口后,此类的任何实例都可以被此接口的变量所引用。
如:
class A implements B{
...
public static void main(String args[]){
B b=new A(...);
}

DDrddr 2003-11-19
  • 打赏
  • 举报
回复
请coolroy2000(coolroy)讲讲
DriverManager.getConnection()返回的是一个实例化的对象
这个对象的类型是什么的呢??
coolroy2000 2003-11-19
  • 打赏
  • 举报
回复
connection conn=DriverManager.getConnection();

这个代码肯定很多人都写过吧? connectino就是个interface, 可以查api

晕~~~~~~~~~
DriverManager.getConnection()返回的是一个实例化的对象,该对象实现了connection接口啊,当然可以做这样的类型转换啊~~~~~~~
OhGod 2003-11-19
  • 打赏
  • 举报
回复
接口有引用吗?
如果有,那么,一个接口的引用可以指向一个类的实例?

疑惑
OhGod 2003-11-19
  • 打赏
  • 举报
回复
en drivermanager是。

but , DataSource 是interface, 配置连接池的时候实例化了
kinoviti 2003-11-19
  • 打赏
  • 举报
回复
我的理解是:
connection是接口 没错 ;接口的方法都不能使用 没错;
但是 java中 reference + upcasting 就可以完成我们认为不可思议的动作,
DriveMangement是类 ,实例化出一个 A 然后调用A.getConnection()返回一个
connection (这里进行了 UPCASTing)
所以 此处的
Connection B = A.getConnection(jdbc,username,passwd);
B其实是指向一个实例的,并不是空的接口
kinoviti 2003-11-19
  • 打赏
  • 举报
回复
java.sql.DriverManager是class 不是interface
java.sql.connection 是 interface
OhGod 2003-11-19
  • 打赏
  • 举报
回复
还有javax.sql.DataSource 也是个Interface, 可是在做jdbc的连接池的时候,可以通过jndi来获取,也可以 getConnection()
疑惑~
DDrddr 2003-11-19
  • 打赏
  • 举报
回复
我也不明白
你说的这个我倒是明白
getConnection()方法返回的是实现了Connection接口的实例,所以是正确的
举例来说,InterfaceA是接口,ClassB是类,它实现了InterfaceA接口。
你就可以这样写
InterfaceA a = new ClassB();
这是正确的

我不明白的是,java中谁实现了这几个接口呢?他们的返回值也都是接口啊??
okwuzhijun 2003-11-19
  • 打赏
  • 举报
回复
接口可以作为一种数据类型,但不能实例化。
换个角度想想,假如一个接口被实例化了,那么你调用它的方法时它又将如何产生动作昵?
加载更多回复(4)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧