我们知道在java8之前 ,一个类实现一个接口需要实现接口所有的方法,

但是这样会导致一个问题,当一个接口有很多的实现类的时候,修改这个接口就变成了一个非常麻烦的事,需要修改这个接口的所有实现类

不过在java8中这个问题得到了解决,没错就是default函数;

看一个例子:

 interface DefaultInterface {
int operate(int a, int b); default int addition(int a, int b) {
return a + b;
}
} public class DefaultMethodTest implements DefaultInterface { @Override
public int operate(int a, int b) {
return a - b;
} public static void main(String[] args) {
DefaultMethodTest defaultMethodTest = new DefaultMethodTest();
System.out.println("5 + 3 = " + defaultMethodTest.addition(5, 3));
System.out.println("5 - 3 = " + defaultMethodTest.operate(5, 3));
}
}

我们看到 DefaultInterface  接口的addition方法用default进行了修饰,并且有自己的默认实现. 而DefaultMethodTest 实现了 DefaultInterface  接口却不用实现addition方法.

这样如果我们对一个接口就行修改,而又不想修改已经有的实现类的时候就变得非常有用.

最新文章

  1. Oracle学习笔记十三 触发器
  2. java日期工具类
  3. Smokeping安装教程
  4. Git命令行(转用于学习和记录)
  5. [翻译][erlang]cowboy路由模块使用
  6. Redis数据库的使用与介绍
  7. 利用HttpListener创建简单的HTTP服务
  8. 有关嵌入式linux的注意点总结
  9. PLSQL_查询已执行SQL的绑定参数(案例)
  10. 一个php函数,能够遍历一个文件夹下的所有文件和子文件夹
  11. JS字符串截取
  12. winform datetimepacker 开始日期 结束日期 分类: WinForm 2014-07-15 19:14 124人阅读 评论(0) 收藏
  13. linux 和 ubuntu 修改主机名
  14. Windows 端口和任务 查看 相关命令
  15. cocos2d-x教程2:在windows下怎样批量转换pvr,ccz为png或jpg
  16. Java与算法之(5) - 老鼠走迷宫(深度优先算法)
  17. OSXFUSE file system is not available 解决方法
  18. 数组遍历for forEach for..in for..of
  19. [译]课程 1: 使用 Quartz
  20. 使用crypt配置Basic Auth登录认证

热门文章

  1. (2)Django-pycharm部署
  2. 洛谷——1508 Likecloud-吃、吃、吃
  3. springboot 2.0 整合 同时支持jsp+html跳转
  4. centos7 samba安装与配置
  5. ios界面笔记(一)
  6. 【AOP】Spring AOP基础 + 实践 完整记录
  7. Linux学习之十三-vi和vim编辑器及其快捷键
  8. haifeng
  9. JAVA Eclipse ActivityManager Warning Activity not started, its current task has been brought to the front怎么办
  10. 不让命令记录到history中