欢迎光临散文网 会员登陆 & 注册

Java笔记--接口新特性、代码块

2023-09-05 13:12 作者:爪哇岛江户川  | 我要投稿

一、接口新特性

1、JDK8的新特性:接口中可以定义有方法体的方法。(默认、静态)

假设我们在项目中编写了一个接口,里面编写了一堆抽象方法。然后又编写了接口的两个实现类,并且重写了里面的方法。

然后项目1.0版本正式上线了

在项目2.0版本,需要对功能进行一些丰富,我们要加入一些新的方法,按照以前,我们要是在接口中编写抽象方法,所有的实现类会报错,因为实现类要对新编写的抽象方法进行重写。如果接口中可以使用带有逻辑的方法,并且实现类可以直接拿来用,就可以解决接口升级的问题。

JDK8接口特性:允许在接口中定义非抽象方法,但是需要使用关键字default修饰,这些方法就是默认方法。

public是可以省略的,方法的默认权限就是public

假设我们在接口中编写了一个method方法,在实现类中直接输入方法名敲回车

方法被重写了,super.调用的是父类的方法,而加上前面的接口名.调用的是"干爹",而且在实现类中的重写方法,不需要带default关键字。

如果一个实现类同时实现两个接口,而且两个接口中的方法名是相同的,我们必须在实现类中将方法重写,并且指定用哪个接口的方法。

接口中也可以编写静态方法,直接通过接口名.进行调用。

2、JDK9的新特性:接口中可以定义私有方法。

接口中的私有方法,实现类不能调用有什么意义吗?

在这个接口中,里面有两个抽象方法,还有两个默认方法,但是这两个默认方法中有一段逻辑是重复的,代码显得很臃肿。我们可以将重复代码抽取出一个新的方法,但是这个方法不想让别人使用,可以加上private,但是不能加default。接口中的私有方法不能带default。


三、代码块

使用{ }括起来的内容就是代码块。

分为局部代码块、构造代码块、静态代码块、同步代码块四类。

1、局部代码块

位置:方法中的一对大括号。

作用:限定变量的生命周期,提早的释放内存。

2、构造代码块

位置:类中,方法外。

可以看见,在创建对象,执行构造方法的时候,就会执行构造代码块,优先于构造方法执行。

上面的图在字节码文件中是这样的:

我们在源文件中的构造代码块,在编译后,会分散到该类的每一个构造方法中,而且还是在构造方法的最开始的位置存放。

3、静态代码块

位置:类中方法外,需要加入static关键字。

特点:随着类的加载而执行,因为类只加载一次,所以它只执行一次。

实例:如果以后我们要赋值的不是基本数据类型,而是对象类型,就可以用静态代码块来赋值。


Java笔记--接口新特性、代码块的评论 (共 条)

分享到微博请遵守国家法律