final表示最终的,不可变的,可以用来修饰数据、方法和类。
1、final数据
final用来定义一个常量,表示其一旦被初始化后,其值将不能再被改变。
final可以定义一个编译时常量
final int const = 1;//编译时被初始化,此后不能被改变
也可以定义一个运行时被初始化的常量
final int const2 = new Random(20).newxtInt(10);
还可以定义一个空白final(意为被声明为final但是为给定初值)。
public class Final { final int j; public Final() { j=3; //必须在构造器中进行初始化 } }
final参数意味着无法改变该参数的值。主要用来向匿名内部类传递数据。
注意:final修饰引用变量时,只表示引用值是不能改变的,即该引用不能再指向其他对象。但是该引用所指向的对象自身是可以被修改的。数组也是对象。
2、final方法
final方法在继承中无法被改变。
所有的private方法都被隐式地指定为是final的。
试图覆盖一个private方法时编译器不会给出错误信息,但是这并不意味着覆盖成功,而仅仅意味着子类有了一个基类接口未提供的新方法。
3、final类
该类不能被继承。
其内部数据可以选择是否定义为final;其内部方法都被隐式地定义为final,因为无法覆盖它们。