Java 8中接口的新特性
2021/10/26 20:40:18
本文主要是介绍Java 8中接口的新特性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
一、静态方法
二、默认方法
三、知识点
四、练习(接口冲突的解决方式)
Java8中,可以为接口添加静态方法和默认方法
一、静态方法
使用static关键字修饰
接口中定义的静态方法,只能通过接口来调用
二、默认方法
使用default关键字修饰
通过实现类的对象,可以调用接口中的默认方法
如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写的方法
三、知识点
- 如果子类(实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中同名同参数的方法 ——> 类优先原则
- 如果实现类实现了多个接口,而这个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,会报错。 ——> 接口冲突 需要我们必须在实现类中重写此方法
- 如何在子类(实现类)的方法中调用父类、接口中被重写的方法?
public interface CompareA { //静态方法 public static void method1() { System.out.println("CompareA:北京"); } //默认方式 public default void method2() { System.out.println("CompareA:上海"); } default void method3() { System.out.println("CompareA:上海"); } } public class SubClassTest { public static void main(String[] args) { SubClass s = new SubClass(); // s.method1(); //没有为类型 SubClass 定义方法 method1() // SubClass.method1(); //接口中定义的静态方法,只能通过接口来调用 CompareA.method1(); //通过实现类的对象,可以调用接口中的默认方法 s.method2(); //如果子类(实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中同名同参数的方法 —— 类优先原则 //如果实现类实现了多个接口,而这个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,会报错。 ——> 接口冲突 //需要我们必须在实现类中重写此方法 s.method3(); } } class SubClass extends SuperClass implements CompareA,CompareB{ public void method2() { System.out.println("SubClassA:上海"); //如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写的方法 } public void method3() { System.out.println("SubClassA:深圳"); } //如何在子类(实现类)的方法中调用父类、接口中被重写的方法? public void myMethod() { method3(); //自己定义的重写的方法 super.method3(); //调用的父类中声明的方法 //调用接口中的默认方法 CompareA.super.method3(); CompareB.super.method3(); } } public class SuperClass { public void method3() { System.out.println("SuperClass:北京"); } } public interface CompareB { default void method3() { System.out.println("CompareA:上海"); } }
四、练习(接口冲突的解决方式)
interface Filial{//孝顺的 default void help() { System.out.println("老妈,我来救你了"); } } interface Spoony{//痴情的 default void help() { System.out.println("媳妇,别怕,我来救你了"); } } class Father{ public void help() { System.out.println("儿子,救我媳妇!"); } } class Man extends Father implements Filial,Spoony{ @Override public void help() { System.out.println("我该救谁呢?"); Filial.super.help(); Spoony.super.help(); } }
这篇关于Java 8中接口的新特性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29开源工具的魅力:让文档管理更“聪明”
- 2024-11-29Release-it开发入门教程
- 2024-11-29Rollup 插件入门教程:轻松掌握模块打包
- 2024-11-29从零到一,产品经理如何玩转项目管理和团队协作
- 2024-11-29如何通过精益生产管理工具帮助项目团队实现精准进度控制?
- 2024-11-29低代码应用开发课程:新手入门与基础教程
- 2024-11-29入门指南:全栈低代码开发课程
- 2024-11-29ESLint课程:初学者快速上手指南
- 2024-11-29JWT课程:新手入门教程
- 2024-11-29高效办公秘诀:文档管理中的可视化革命