详解java接口(interface)在不同JDK版本中的变化
JDK1.7以及以前:
接口(interface)在JDK7及之前的版本对接口的要求:
接口定义:
- 使用interface关键字。
- 接口中的所有成员变量都默认是由publicstaticfinal修饰的。
- 接口中的所有方法都默认是由publicabstract修饰的。也可以使用protected,但不能用private。
- 接口中的所有方法都没有方法体。
- 接口没有构造方法。因为构造方法用于创建对象。
- 实现接口的类必须提供接口中所有方法的具体实现内容。
可声明静态常量、属性和抽象方法:
全局变量(publicstaticfinal)和抽像方法(publicabstractmethod())
publicinterfaceMyInterface{ staticfinalintx=0; inty=0;//默认staticfinal publicabstractvoidmethod1(); abstractvoidmethod2(); voidmethod3();//默认publicabstract }
JDK8:
在JDK7的基础上可以声明静态方法和默认方法,必须写方法体
publicinterfaceMyInterface{ staticfinalintx=0; inty=0;//默认staticfinal publicabstractvoidmethod1(); abstractvoidmethod2(); voidmethod3();//默认publicabstract //JDK8:静态方法 publicstaticvoidmethod4(){ System.out.println("静态方法"); } //JDK8:默认方法 defaultvoidmethod5(){ System.out.println("默认方法"); } }
JDK9:
基于JDK8增加了私有静态方法的声明
//JDK8:privatestatic方法 privatestaticvoidmethod6(){ System.out.println("privatemethod6"); }
注意:
- 实现接口的类(非抽象类)必须实现接口中所有的抽象方法;
- 接口中的静态方法,只能使用接口名称调用;
- 接口中default方法属于实现接口类的对象方法,可以重写;
- 接口中的privatestatic方法只能在接口内调用;
- 继承的接口实现子接口的抽象方法需要加dafault。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。