1.JDK7及其之前,接口中都是抽象方法,且不能出现static方法
2.接口的变量都是public final static 全局静态常量,无变化
3.接口中可以添加非抽象方法(static),通过接口名调用,不能使用实现类的对象名调用
4.接口中可以添加非抽象方法(非static),需使用default定义。  实现类可以直接使用default方法,可以重写default方法,但是必须去掉default(default只能接口中使用)
5.上级接口中default方法的调用:MyInterface.super.method2();
6.目的是为了既有的成千上万的Java类库的类增加新的功能, 且不必对这些类重新进行设计。 
比如, 只需在Collection接口中增加default Stream<E> stream(),相应的Set和List接口以及它们的子类都包含此的方法, 不必为每个子类都重新copy这个方法。但是如果父类、多个接口都同名default、static方法可怎么办呢?有优先顺序和解决之道或者是为了解决实现该接口的子类代码重复的问题
 
public interface MyInterface {
//不能出现static方法
//public static abstract void method1(); //抽象方法,之前就支持
void method1();
//
static void method2(){
System.out.println("JDK8后接口中可以有static修饰的非抽象方法");
}
//private protected public
public default void method3(){
System.out.println("JDK8后接口中可以有非static的非抽象方法,必须添加default");
System.out.println("这个default可不是switch的default,也不是默认权限修饰符"); } public default void method3(String name){
method3();
System.out.println(name);
} public static void main(String[] args) {
MyInterface.method2(); }
}
public class MyClass  implements MyInterface{

       @Override
public void method1() {
System.out.println("MyClass method1"); }
//接口中的default方法,子类可以直接调用,也可以重写,但是必须去掉default
//default是接口中专用的
@Override
public void method3() {
MyInterface.super.method3();//!!! 如何调用接口的default方法 } public static void main(String[] args) {
MyInterface myClass = new MyClass();
//myClass.method1();
//myClass.method3();
myClass.method3("abc");//default方法只能通过对象名调用
//myClass.method2();//static
MyInterface.method2();//静态方法只能通过接口名调用
//因为一个类可能实现多个接口,万一多个接口中都有static的且非抽象的method2
} }

最新文章

  1. 那些你不知道的chrome URLs
  2. Web开发入门疑问收集(不定期更新)
  3. [OAuth2 &amp; OpenID] 1.OAuth2授权
  4. 如何提高手机APP的用户体验?
  5. 剑指offer--面试题4
  6. hdu 3342 Legal or Not(拓扑排序) HDOJ Monthly Contest – 2010.03.06
  7. lfs遇到的一些问题--准备阶段
  8. 怎么在我们的App中集成条码扫描功能?
  9. &amp;&amp;与||的用法总结
  10. 微信小程序实战[01]
  11. PHP中$_POST和$_GET的用法
  12. 【转】cJSON 源码分析
  13. Luogu 1351 NOIP 2014 联合权值(贪心,计数原理)
  14. Python中包(package)的调用方式
  15. ROS学习笔记一(ROS的catkin工作空间)
  16. keras的Embedding层
  17. [case]filesystem problem
  18. Codeforces 981D Bookshelves(按位贪心+二维DP)
  19. docker微服务部署之:五、利用DockerMaven插件自动构建镜像
  20. JavaScript 中typeof、instanceof 与 constructor 的区别?

热门文章

  1. coding++:java-自定义签名+拦截器
  2. iOS 图片的解压缩
  3. 纯html加css的键盘UI效果图
  4. 从火车站车次公示栏来学Java读写锁
  5. ㊙力荐!!!那些炒鸡有用的chrome插件㊙
  6. Java合并png图片
  7. [WPF]是时候将WPF控件库从.Net Framework升级到.NET Core 3.1
  8. B - Bound Found POJ - 2566(尺取 + 对区间和的绝对值
  9. Three.js 中的参数调试控制插件dat.GUI.JS - [Three.js] - [dat.GUI]
  10. maven聚合与继承笔记