JAVA8学习5-接口默认方法(default)
2019-04-15 15:24
120 查看
5 接口默认方法
在 java8 之后,我们可以在接口中写默认实现方法。使用关键字 default 定义默认接口实现
在 java8 中,接口引入默认方法是为了什么: 为了能保证向后兼容。
现在对接口默认方法的几种情况进行说明。
5.1 一个类实现一个默认实现方法的接口
首先我们定义一个接口
package cn.zxhysy.jdk8.dufaultmethod; public interface MyInterface { default void myMethod() { System.out.println("myInterface1"); } }
定义一个类,实现该接口调用接口默认方法。
package cn.zxhysy.jdk8.dufaultmethod; public class MyClass implements MyInterface { public static void main(String[] args) { MyClass myClass = new MyClass(); //实体类可以直接调用。 myClass.myMethod(); } }
5.2 一个类实现两个接口,且接口的默认方法名一直
这里我们在上面的基础上,再定义一个接口为 myInterface2
package cn.zxhysy.jdk8.dufaultmethod; public interface MyInterface2 { default void myMethod(){ System.out.println("myInterface2"); } }
这时我们就不可一直用基类来直接调用方法,因为会报错,说有多个接口的默认方法名一致,需要我们重写方法。
package cn.zxhysy.jdk8.dufaultmethod; public class MyClass implements MyInterface,MyInterface2 { @Override public void myMethod(){ //todos... // 也可以用某个接口的默认方法。 MyInterface2.super.myMethod(); } public static void main(String[] args) { MyClass myClass = new MyClass(); myClass.myMethod(); } }
如果我们要保留或者用某个接口的默认方法,只需要在覆盖方法的时候,用
接口名.super.方法名,就如上面代码:
@Override public void myMethod(){ //todos... // 也可以用某个接口的默认方法。 MyInterface2.super.myMethod(); }
5.3 一个类实现另一个类和接口,其中另一个类和接口中的默认方法名字一直。
这里我们就用另一个类 MyInterfaceImpl 来实现 MyInterface 接口,用 MyClass 来继承该类,和实现 MyInterface2 接口。
package cn.zxhysy.jdk8.dufaultmethod; public class MyInterfaceImpl implements MyInterface{ @Override public void myMethod(){ System.out.println("myInterfaceImpl"); } }
package cn.zxhysy.jdk8.dufaultmethod; public class MyClass extends MyInterfaceImpl implements MyInterface2 { public static void main(String[] args) { MyClass myClass = new MyClass(); myClass.myMethod(); } }
结果中,没报错,默认情况下,默认使用的是 实现类中的方法,而不会使用接口中的默认方法。打印了
myInterfaceImpl
相关文章推荐
- Java 8 - Interface Default Method接口默认方法
- 30分钟入门Java8之默认方法和静态接口方法学习
- Java8新特性--Interface中的default方法(接口默认方法)
- 学习笔记3:java 1.8 接口的默认方法 Defult 关键字
- Java8学习笔记 — 其它新特性【接口默认方法(静态方法)、重复注解、类型注解】
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与LinkedHashSet类))
- JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)
- java8新特性之函数式接口、lambda表达式、接口的默认方法、方法和构造函数的引用
- Java接口中的变量和方法默认的类型<转>
- 30分钟入门Java8之默认方法和静态接口方法
- Java8新特性之接口中的默认方法与静态方法
- Java8接口中默认方法和静态方法
- 14. JAVA 枚举(Enum、类集EnumMap&EnumSet 、实现接口、定义抽象方法) ----- 学习笔记
- Java8接口的默认方法
- java中接口的属性、方法的默认修饰符和类的属性、访问修饰符的区别
- 【java学习记录】7.定义一个接口ArearInterface,其中包含一个方法,计算面积三角形、矩形、圆形的面积
- 2.接口默认方法教学-java8新特性
- 关于java8接口中默认方法的使用
- Java8 新特性 接口中的default方法
- Java8新特性 - 默认接口方法