空白final final方法 final与private

所谓空白final就是指不初始化后续再对其进行赋值,但是这个操作只能进行一次,也就是不能二次赋值,因为final是不能改变的。

public class Test {
	private final int j;//空白final
	public Test()
	{
		j = 1;//对final进行初始化
	}
}
但是如果只有空白 final但是没有对其进行初始化的话会报 The blank final field j may not have been initialized

===========================================================================================================

final方法

使用final方法的原因有两个

1.把方法锁定,以防任何继承类修改它的含义,确保在继承中使方法行为保持不变,并且不会被覆盖。

2.以前是为了效率才使用final。在java早期,如果将方法指明为final,就是同意编译器将其转为内嵌调用。调用final命令时会和正常方式不一样,而是将参数压入栈,跳至方法代码处并执行,然后跳回并清理栈中内容,处理返回值。这样就消除了方法调用的开销,会提高效率,但是当放大很大是,程序代码就会膨胀,内嵌所带来的性能提高会因为花费于方法内的时间量而被缩减。  (这段书上是这么说,因为对底层实现不了解,所有也理解的不够透彻)

在最近的java版本中,已经不再需要final来进行优化了,有了新的技术来取代。在java SE5/6是,应该让编辑器自己去处理效率问题,只有在想要明确禁止覆盖时,才将方法设置为final

===========================================================================================================

final与private关键字

类中所欲的private方法都隐式地指定为是final的。由于无法取用private方法,所有也就无法覆盖它。可以对private方法添加final修饰词,但不会增加任何意义。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页