final关键字:final可以修饰属性、方法、类。
final修饰类:当一个类被 final所修饰时,表示该类是一个终态类,即不能被继承。
final修饰方法:当一个方法被 final所修饰时,表示该方法是一个终态方法,即不能被重写(Override)。
final修饰属性:当一个属性被 final所修饰时,表示该属性不能被改写。当 final修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化(比如说不能从 10变为 20);如果 final修饰一个引用类型时,表示该引用类型不能再指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。
对于 final类型成员变量,一般来说有两种赋初值方式:
a)在声明 final类型的成员变量时就赋上初值
b)在声明 final类型的成员变量时不赋初值,但在类的所有构造方法中都为其赋
上初值。(因为构造方法一定执行)
public class FinalTest4
{
final int a;
public FinalTest4()
{
a = 0;
}
}
下面这种情况编译报错,因为不知道哪个构造方法先执行
public class FinalTest4
{
final int a;
public FinalTest4()
{
a = 0;
}
public FinalTest4(int a)
{
}
}
在类的所有构造方法中都为其赋上初值。编译通过
public class FinalTest4
{
final int a;
public FinalTest4()
{
a = 0;
}
public FinalTest4(int a)
{
this.a = a;
}
}