default是在java8中引入的关键字,也可称虚拟扩展方法。是指在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。
最初时代开始default基本是都是作为switch的语句联合使用。
内容是1
内容是2
默认值
所以最初在编写switch的时候往往都会在每一个case之中追加一些break语句。
后来从JDK1.8开始出现了一些新的语法环境。Lambda表达式出现,人们开始发现接口的问题。如果说你在最初某个项目的1.0版本里面定义了一个接口的方法,但后来这个接口的子类特别多,大概有1000W个,在这样的情况下,要对接口扩充一个方法(并且这个方法所有的子类的实现都一样),那整个代码的编写就会异常繁琐。在这样的情况下,Java重新定义了接口,出现了default与static定义接口的方法。default方法就好比一个普通方法一样,必须要有实例化对象,而static方法可以直接使用接口名称进行调用。
default在接口中的出现改变了传统接口的实现模式,可以定义普通方法,如果某些方法对于所有的子类都具有同样的实现,那么可以减少定义,但是此类的形式暂时还未完全推广开来,所以先作为了解即可。
更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧