Java的final用途整理

Java的final有许多不同的用途,意义多少有点不同。

  • final类

当类声明成final时,这个类无法被继承。也就是说不能定义final类的子类。

因为final类的类无法定义子类,所以final类声明的方法也不会被覆盖(override)。

  • final方法

若将实例方法声明成final时,这个方法无法被子类所覆盖(override)。若将类方法声明成final时,这个方法无法被子类所隐藏(hide)。

补充说明:

实例的方法被子类的方法覆盖时,实际被调用的方法时在执行时决定的。

类方法被子类方法隐藏时,实例被调用的方法是在编译时决定的。

  • final字段

final的字段值自能制定一次。

要将值指定给final变量字段,有下面两种方法:

第一种是在声明字段时就直接赋初始值

class Someting{
	final int value = 123
}

另外一种则是在构造器中将值赋给字段(blank final)。

class Something{
	final int value;
	Something(){
		this.value = 123;
	}
}

要将值赋给final实例的字段,有下面两种方法:

第一种是在声明字段时就直接赋初始值。

class Someting{
	static final int value = 123;
}

另一种则是在static块(静态初始化子)中将值赋给字段(blank final)。

class Something{
	static final int value;
	static {
		value = 123;
	}
}

 final字段无法使用setValue类的seter方法再次赋其他值。

  • final变量与final参数

局部变量与方法的参数,都可以声明成final。final的变量的值只能指定一次。

final参数的值则是一次都不能指定,因为方法被调用时,已经有值制定进去了。
                                                                                            

                                                                                                      摘自《Java多线程设计模式》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值