Java default方法
来源:互联网 发布:驱动软件哪个好 编辑:程序博客网 时间:2024/06/05 07:00
转载请注明来自:黄朝辉的博客
1.前言
今天在Iterable
接口中看见了一个“新方法”forEach
,在它的前面有个default
关键字。所以特意查了下它的用法。
2.示例与说明
下面是一个小例子:
package cn.sehzh;public class Main implements B{ public static void main(String[] args) { } @Override public void run() { System.out.println("I'm running..."); }}interface B{ public void run();}
在上面的例子中,Main类实现了接口B中的run方法。现在我们想在接口B中增加一个方法,但是又不影响到Main类,这时就要用到default方法了。
修改接口B如下:
interface B{ public void run(); default public void sleep(){ System.out.println("I'm sleep..."); }}
我们在接口B中增加了一个sleep方法,在Main类里不需要修改任何代码。如果去掉default,那么就需要在所有实现了接口B的类中增加相应sleep方法的实现。
接口中有了default方法后,与抽象类更像了。(个人观点)
这样一来就有了一个问题,请看下面的例子:
package cn.sehzh;public class Main implements B, C { public static void main(String[] args) { } @Override public void run() { System.out.println("I'm running..."); }}interface B { public void run(); default public void sleep() { System.out.println("I'm sleep..."); }}interface C { default public void sleep() { System.out.println("I'm sleep in C..."); }}
Main类既实现了接口B又实现了接口C,现在接口B和接口C中都有一个sleep方法。
这时就会报下面的错误:
Duplicate default methods named sleep with the parameters () and () are inherited from the types C and B
解决方法也很简单,在Main类中重写sleep方法即可。
public class Main implements B, C { public static void main(String[] args) { } @Override public void run() { System.out.println("I'm running..."); } @Override public void sleep() { B.super.sleep(); }}
1 0
- Java中的Default方法
- Java default方法
- Java 8 interface default方法
- Java 8的default方法详解
- Java 8 之默认方法(Default Methods)
- Java 8-----默认方法(Default Methods)
- Java 8.0 的新特性——default()方法介绍
- Default命名方法
- Java8中的default方法
- Java8中的 Default 方法
- Java8中的default方法
- Java8 default方法
- default方法的探究
- ubuntu config default java
- Java default protected
- Java default关键字
- Java 8 Default Methods
- Java关键字default
- [bzoj4698][SDOI2008]Sandy的卡片
- windows mysql提示:1045 access denied for user 'root'@'localhost' using password yes 和ERROR 1820解决办法wan
- openstack 管理三十三
- Java核心技术笔记-第5章
- 初探Lambda表达式-Java多核编程【2】并行与组合行为
- Java default方法
- task:scheduled-tasks cron表达式
- winform 可缩放,拖拽,画框,微调框的 pictureBox
- 【PAT】1057. Stack
- Reinforcement Learning学习笔记(2)
- ionic中循环出来的分类组点击改变背景颜色的实现
- 博客内容摘要及阅读顺序
- c++ primer 练习 2.9、2.10
- python for循环和range内置函数