关于接口的问题,接口在下面的代码中的作用??

nkjoshua 2003-07-03 10:22:55
看到一个别人设计的东西,然后有点疑惑.
Org代表组织.
设计中 Org代表的是接口,主要是对org中的属性进行操作,Dborg是org的实现
OrgManager代表对org进行操作的方法也是接口,DbOrgManager是对OrgManager的实现.
现在看到代码如下:
代码一:
public Org createOrg(String aOrgname, long aSuperiorOuid)
throws OrgAlreadyExistsException{
Org newOrg = null;
try {
if(this.getOrg(aOrgname,aSuperiorOuid)){

//The org already exists since now exception, so:
throw new OrgAlreadyExistsException();

}else{
newOrg = new DbOrg(aOrgname, aSuperiorOuid);
}
}catch (OrgNotFoundException unfe) {
SkinUtils.getLogger().debug(unfe.getMessage());
}
return newOrg;
}
这里返回是接口org的类型,但是程序中返回的是Dborg类型,那么是不是程序自动将
org下塑造型.
代码二:
public void deleteOrg(Org aOrg) throws UnauthorizedException {
Connection con = null;
PreparedStatement pstmt = null;
try {
con = ConnectionManager.getConnection();
pstmt = con.prepareStatement(DELETE_ORG_BY_OUID);
pstmt.setLong(1, aOrg.getOuid());
pstmt.execute();
}catch( SQLException sqle ) {
SkinUtils.getLogger().debug(sqle.getMessage());
}finally {
try { pstmt.close();
}catch (Exception e) { SkinUtils.getLogger().debug(e.getMessage()); }
try { con.close();
}catch (Exception e) { SkinUtils.getLogger().debug(e.getMessage()); }
}
}
其中org是接口,难道接口也可以实例??还是其中aOrg只是org接口的实现的一个实例
请高手指点!!!!!!!!!!!!!


...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinsanqi 2003-07-24
  • 打赏
  • 举报
回复
think in java太垃圾了吧。还是看看别的好。:>
itok000 2003-07-22
  • 打赏
  • 举报
回复
OO基础不牢,对于OO的重要特征之一的“多态性”没有理解,在java中是使用接口实现“多态性”,多态性重要一点是向上造型是安全的,而在C++中是使用纯虚类来实现多态性。建议看看《thinking in java》。
dooby 2003-07-04
  • 打赏
  • 举报
回复
接口是不可以直接实例化,但是你可以实例化它的实现类,同时你在使用实例化的对象的时候可以使用接口的类型来代替 就像 数字是接口,正整数是它的实现类 那么你实例化的时候实例化的是正整数,但是你可以将它作为数字类型来传递啊。
pig345 2003-07-04
  • 打赏
  • 举报
回复
OO基础不足,建议看看设计模式方面的书。《java与模式》
armorking2003 2003-07-04
  • 打赏
  • 举报
回复
建议去看看“java虚拟机规范”
armorking2003 2003-07-04
  • 打赏
  • 举报
回复
在这里,类与类型的概念你没分清楚
类型是一个编译期的概念
变量或者表达式具有类型,而对象或者数组没有类型,但属于一个类
关键在于对象与变量不是一回事,
变量是一种存储位置,它有一个相应的类型,有时称之为它的编译期类型。
这种类型,要么是基本类型,要么是引用类型。
引用类型变量的值,是null引用或者一个指向对象的指针

类变量的类型总是被声明的,类型限制在运行期变量可以持有的可能的值
如果变量在运行期的值是一个非null引用,
即它引用了一个具有类(注意,不是类型)的对象或者数祖,
那么,这个类必须与编译期的类型相容,两者是赋值相容的。

关于赋值相容,
当一个(引用类型的)变量是接口类型T的,在编译期,若要把一个引用类型S的值赋给这个变量
S与T必须满足以下两个条件之一:
1、如果S是类类型,则S必须实现T
2、如果S是接口类型,则T必须是S的相同接口或者超接口

nkjoshua 2003-07-03
  • 打赏
  • 举报
回复
能说的在清楚一点吗??3x
javabandit 2003-07-03
  • 打赏
  • 举报
回复
得用接口当然参数和返回值的意思是,只要实现了这个接口的类,都可以充当接口的在程序里的角色,也就是,这些类的实例就是这些参数和返回值.
它的好处就是扩展性好,隐藏了具体的代码实现,维护性就很高!
真的好处很多的,多多实践!

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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