接口里的default,static方法
2024-10-19 22:38:14
我们都知道接口里的变量默认隐含类型是public static final,也是就是说是常量。而方法默认类型是public abstract,所以接口的方法都是抽象方法,但是事实真的是这样吗?
我的PC上安装的是jdk1.8,一次编写接口代码的时候,看到接口里的方法竟然可以定义为default类型,很好奇,就查看了一下这个default关键字究竟有什么含义,原来是jdk1.8的接口新特性,可以查看下面的一篇文章:
(1)增加default方法。对已有的接口,如果想对接口增加一个新方法,那么需要对实现该接口的所有类进行修改,如果接口实的现类很多,就会带来很大的工作量,而且还很容易破坏以前的代码,带来一些问题。如果把新的方法定义为default方法,就可以避免对其他实现类的修改。
但是,这样也会有一个问题:如果接口A和接口B里有一个名字相同并且参数列表也相同的方法都被定义为了default方法,那么当类C实现接口A和接口B的时候就会在编译时报错。由于是编译时报错,这个完全可以接受,当类C成功实现了
接口A和接口B以后(没有冲突),类C的实例就可以调用接口A和接口B里的default方法了。
(2)新增了static函数。static修饰的方法也是非抽象方法,有自己的方法体,在接口中定义一个静态方法,该方法可以直接用< 接口名.方法名() >的形式来调用。相当于调用类的静态方法一样,给方法的调用带来了方便。
最新文章
- Centos7下面配置静态IP
- Google Map API V3开发(2)
- DB
- C++ 11 Template ... 与Decltype 测试
- 多个Python环境的构建:基于virtualenv 包
- 屏幕截图、录像FastStone Capture
- wamp集成环境开启虚拟主机多站点功能
- 【转】分享10VPN
- MySQL数据库事务剖析
- SQLServer 取小时
- Android RatingBar自定义替换系统图片
- 理解jquery的.on()方法
- JSP EL
- C#中byte[] 与指针
- 对java的Thread的理解
- MQ在高并发环境下,如果队列满了,如何防止消息丢失?
- 11)django-ORM(操作增删改查)
- 16-(基础入门篇)GPRS(Air202)关于多个文件中的变量调用和定时器
- StringBuild类
- OpenNebula学习第一节OpenNebula Front-end Installation
热门文章
- 利用自定义动画 animate() 方法,实现某图书网站中“近 7 日畅销榜”中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠标移开时,继续滚动
- EMQX源码编译过程
- versions-maven-plugin插件批量修改版本号
- STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解)
- POJ 2442 Sequence堆 优先队列
- spring-Ioc(二)学习笔记
- spring5无法在控制台打印日志的原因
- centOS8安装java14
- Centos 7.6关闭selinux
- Visual Studio 设置背景图片主题(所有版本设置方法)