Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现。
Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程,正确地使用接口、抽象类这些太有用的抽象类型做为java结构层次上的顶层。
Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了。
1、Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
3、从第2点不难看出,Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。

最新文章

  1. Software Project Management hw1
  2. Android大神博客
  3. python面向对象(一),Day6
  4. java 为啥变量名前要加个m?
  5. [unity3d程序] 颜色渐变效果
  6. jQuery刷新div内容,并对刷新后元素绑定事件。$(document).on()
  7. Linux下Keepalived 安装与配置
  8. SystemTap----常用变量、宏、函数和技巧
  9. svs 在创建的时候 上传文件夹 bin obj 这些不要提交
  10. SQL:将查询结果插入到另一个表的三种情况
  11. LVM(2)逻辑卷的扩展、缩减、快照卷
  12. 【Linux】管理在线用户
  13. 201521123015 《Java程序设计》第3周学习总结
  14. windows配置MySQL
  15. Winform Focus()函数不起作用 解决办法
  16. memcached—Java操作Memcached实例
  17. [matlab] 19.matlab 基础几何学
  18. 题解——牛客网Wannafly挑战赛23 B-游戏 (SG函数)
  19. 构造函数中用:base
  20. 服务器主体 "sa" 无法在当前安全上下文下访问数据库 XXX[SQLSTATE 08004] (错误 916). 该步骤失败。

热门文章

  1. MVC4数据访问EF查询linq语句的时候报错找不到表名问题
  2. mockito学习笔记
  3. php单例模式深入讲解
  4. android bindService()
  5. ORACLE搭建Stream过程中报错【error收集】
  6. iOS更改ShareSDK默认的分享功能界面
  7. MyEclipse导入Maven项目报错 Plugin execution not covered by lifecycle configuration:
  8. win8\win server 2012添加【中文--美式键盘】
  9. 转载:执行脚本出现bin/bash: bad interpreter: No such file or directory
  10. PHP获取文件扩展名的多种方法