写在前面,下面是在百度百科上看到的,之前就看过,这次再看感觉有更深的体会,真的是这样,每一个脚印都会留下痕迹

java接口和java抽象类有太多相似的地方,又有太多特别的地方,这里说下两者之间的一个最大的区别:

1.java抽象类可以提供某些方法的实现,但是java接口不可以,这个可能是java抽象类唯一的优点,但是这个优点非常有用,如果向一个抽象类里加一个新的具体的方法,那么它所有的子类一下子都得到了这个新方法。

而java接口就做不到这一点,如果向一个java接口里加入一个新方法,所有实现这个接口的泪就无法成功通过编译了,因为必须让每一个继承这个接口的类都再实现这个方法才行,很明显这是java接口的缺点。

2.一个抽象类的实现只能有它的子类给出,java只能单继承,所以抽象类要是作为类型定义工具的话就不好使了。在这一点上,接口的优势就出来了,任何一个实现了java接口的规定方法的类都可以具有这个接口的类型,而一个类又可以实现任意多个java接口,从而这个类就有了多种类型,所以java接口是定义混合类型的理想工具,混合类意思是一个类不仅具有某个主类型的行为,而且具有其他的次要类型行为。

最新文章

  1. Qt 程序打包发布
  2. 微信JSApi支付~坑和如何填坑
  3. Java — JTree and JTable以及sqlServer的两种连接
  4. 2016-12-14:通过static关键字,使用类成员函数作为回调函数
  5. 借教室(codevs 1217)
  6. c# js调用AjaxPro方法出错解析
  7. JavaScript省市联动菜单
  8. rabbitmq-message(C#)
  9. Ubuntu on win10
  10. ML—高斯判别分析
  11. 2017-2018-1 Java演绎法 第六七周 作业
  12. PHP——秒数转换为时分秒
  13. Python3 socket网络编程(一)
  14. Photoshop独立安装包下载页面
  15. tiny png
  16. 设置实体类型中String类型的属性值为String.Empty
  17. 探秘Java中的String、StringBuilder以及StringBuffer(转载)
  18. NRF24L01模块配置
  19. 各种SQL查询技巧汇总 (转)
  20. Hibernate缓存研究

热门文章

  1. Android NDK 同时编译多个模块
  2. ArrayList之foreach循环删除倒数第二个元素,不触发fail-fast机制
  3. C#中流Stream的使用-学习
  4. js、jquery实现列表模糊搜索功能
  5. LearnOpenGL学习笔记(一)画个三角形
  6. cookie和session基础知识学习
  7. flask 杂记3
  8. 2.3 vue配置(上)
  9. GIL 信号量 event事件 线程queue
  10. C++构造函数的default和delete