文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

default怎么修饰接口中的方法详解

2024-04-02 19:55

关注

一、default修饰接口中的方法

在实现HandlerInterceptor接口时,我发现不实现HandlerInterceptor接口的方法也不会报错

在这里插入图片描述

仔细想来,还是我对接口的理解不清晰。

打开源码发现HandlerInterceptor接口中的方法都是default

在这里插入图片描述

在以前的接口编写中,我总是省略权限修饰符,因为在接口中的方法中默认是public abstract

那么再来对接口进行总结。

在这里插入图片描述

那么也就是说,实现类要覆盖接口中的抽象方法就能实例化,而HandlerInterceptor接口中的方法都是default

在JDK8增加的default修饰接口方法时,有什么作用呢?

实现类会继承接口中的default方法

还有两个要注意的点

一言以蔽之,更接近实现类的优先级更高,如: 实现类 > 抽象类 > 接口

1. 如果一个类同时实现接口A和B,接口A和B中有相同的default方法,这时,该类必须重写接口中的default方法

2. 如果子类继承父类,父类中有b方法,该子类同时实现的接口中也有b方法(被default修饰),那么子类会继承父类的b方法而不是继承接口中的b方法

二、Java中的“多继承“?

在学习C++时,多继承会带来非常著名的菱形继承问题

那么为什么Java接口为何能多继承?

1.Java接口是行为性的,也就是说接口只是定义某个行为的名称
2.具体的实现动作,都在实现类本身这里。

从JDK8开始,接口中可以写default方法了。这其实是java自己就给自己出了一个问题。

接口可以书写默认方法了,然后又因为接口之间是可以多继承的,因而实质上Java 8的接口多继承其实也会涉及到实现多继承的问题。

解决接口default方法冲突的三步骤:

总之,Java8在语言层面上,对若出现接口default方法冲突的解决方案是:不作为。其实不作为也是一种作为,它让编译器去提示调用者必须显示的override这个冲突的方法,让coder自己去决定调用逻辑

三、关于抽象类与接口的思考

如果现在问我接口和抽象类有什么区别,我会觉得去说两者之间具体的使用细节是舍本逐末了,应该从设计理念出发。

于是引出我对此的理解

抽象类:抽象体,对于个体(事物)的抽象。

接口:抽象面,对于事物某一特性(行为)的抽象。接口只是定义某个行为的名称。

在Java的设计中,经常可以看到两者组合起来使用。如Servlet

什么叫Servlet?实现了Servlet接口的类就是一个Servlet。

在这里插入图片描述

可以发现,抽象类GenericServlet实现了Servlet接口。

接口的好处是什么?

规范。

抽象类的好处是什么?

捕捉子类的通用特性,减少冗余代码,同时起到规范的作用。

这样两者结合起来的好处是什么(GenericServlet)?

规范,同时减少了编程人员的所需要编写的代码,抽象类给出模板。

到此这篇关于default怎么修饰接口中的方法详解的文章就介绍到这了,更多相关default修饰方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯