JDK8中的新特性
主要解决问题: 在升级接口时为了避免实现接口的子类要全部重写新的抽象方法,允许在接口类中写默认方法和静态方法。
特点:
不强制重写,static还可以直接类名调用
如果实现多个接口,要指明类目调用 如
该类实现两个接口都有method方法
InterA.super.method();
InterB.super.method();
直接super.method()是调用Object类中的method方法,但Object类里没有method方法
格式如下:
public default 返回值类型 方法名(参数列表) {}
public static 返回值类型 方法名(参数列表) {}
JDK9的接口新特性
可定义私有方法,作用是将接口中默认方法重复的代码放入私有方法中减少代码冗余且外部也不能方法该私有方法。
interface Inter {
public default void start(){
System.out.println("start方法执行...");
log();
}
public default void end(){
System.out.println("end方法执行...");
log();
}
public default void log() {
System.out.println("日志记录");
}
}
代码块
在Java类下,使用 { } 括起来的代码被称为代码块
局部代码块
位置:方法中定义
作用:限定变量的生命周期,及早释放,提高内存利用率(少用)
构造代码块
位置:类中方法外定义
特点:每次构造方法执行的时,都会执行该代码块中的代码,并且在构造方法执行前执行
作用:将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性(少用)
静态代码块
位置:类中方法外定义
特点:需要通过static关键字修饰,随着类的加载而加载,并且只执行一次 作用:在类加载的时候做一些数据初始化的操作(常用)