[TOC]
final
类基本含义为无法改变,但在数据、方法和类三种情况下的使用不同。
final
数据
final
关键字告知编译器数据恒定。final
的引用在数据类型、对象描述时,功能不同。对基本数据类型,final
使数据恒定不变;但是对对象引用,final
限定的是不能更改描述对象,但对像的值变动是允许的,同样适用于数组此对象。- 当
static final
域时,只占据一段不改变的存储变量。可以认为对所有对象数值进行锁止。
注意事项
- 当
final
描述数据时,不能更改数据变量。 - 当
final
描述数组时final int[] a={}
,由于没有更改对象,也没有static
,可以更改数组的值,不可以更改数组大小。 - 当
final
描述对象时,不能更改对象。 - 带有恒定初始值的
final static
基本类型的命名方式为VAL_THR
。 final static
数据类型不可以通过创建第二个对象而改变,纵使对象为随机方法。final
允许空白声明,在使用前必须初始化并赋值。
final方法
使用原因
- 锁定方法,防止继承类修改含义。
- 确保在继承中使方法行为保存不变,并且不被覆盖。
class PersonalLoan{
public final String getName(){
return "personal loan";
}
}
class CheapPersonalLoan extends PersonalLoan{
@Override
public final String getName(){
return "cheap personal loan"; //compilation error: overridden method is final
}
}
final
和private
关键字
Java默认情况下,将private
关键字都指定为final
。由于无法取用,也就无法更改。
当试图覆盖private
类型时,只不过生成了一个新的方法。
final类
使用目的
当不打算类被继承,也不允许别人这样使用,使用final
来修饰类。