我正在学习JAVA,看到抽象类和接口的时候很困惑,觉得没有什么大的区别。我看那些例题,用抽象类和接口都可以写,为什么要分抽象类和接口哦。这两个在使用的时候是不是有针对性,还是说有本职的区别?
谢谢
解决方案 »
- 处理通过servlet收到的xml数据,有疑惑
- JNI中数据类型的转换问题
- MYSQL JDBC配置问题
- 一个简单的线程问题(在线等)
- 我要以开发一个JAVA IDE来做毕业论文,大家可以给我想想吗?
- 怎么样调整图片大小阿
- java开发oracle数据库应用程序一般会使用到哪些比较好的jar包啊?比如log4j之类的啊,感觉很有用啊.多谢大侠赐教啊!
- ???关于概念问题:java,j2ee,EJB,J2SE 到底有什么区别啊???
- C++中的htonl,htons,ntohl,ntohs网络和主机字节序转换函数在java中怎么实现。
- 菜鸟求救,大侠救救我啊,开门不顺
- 文件中存的为何是乱码?
- swing 和javabean的目的,请教
如 果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个 新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。
在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
3、从第2点不难看出,Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。
4、结合1、2点中抽象类和Java接口的各自优势,具精典的设计模式就出来了:声明类型的工作仍然由Java接口承担,但是同时给出一个Java 抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java 接口在最上面,然后紧跟着抽象类,哈,这下两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。
在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。
Java接口和Java抽象类的存在就是为了用于具体类的实现和继承的,如果你准备写一个具体类去继承另一个具体类的话,那你的设计就有很大问题了。Java抽象类就是为了继承而存在的,它的抽象方法就是为了强制子类必须去实现的。
使用Java接口和抽象Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。而不要用具体Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。
我想,如果你编的代码里面连一个接口和抽象类都没有的话,也许我可以说你根本没有用到任何设计模式,任何一个设计模式都是和抽象分不开的,而抽象与Java接口和抽象Java类又是分不开的。
http://blog.csdn.net/lovefeeling/archive/2008/07/26/2712845.aspx