final可以用来修饰的结构:类,方法,变量
final用来修饰一个类:此类不能被其他类所继承。比如String类,System类,StringBuffer类
final用来修饰方法,表示此方法不可以被重写,比如Object类中getClass()
final用来修饰变量:此时”变量”就称为是一个常量
1)final修饰属性:可以考虑赋值的位置有:显示初始化,代码块中初始化,构造器中初始化。
class NewPerson {final int WIDTH = 0; //显示初始化final int LEFT;{LEFT = 1; //代码块中初始化}final int RIGHT;//构造器中初始化public NewPerson() {RIGHT = 2;}public NewPerson(int right){this.RIGHT=right;}}
2)final修饰局部变量:尤其是使用final修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值以后,就只能在方法体内使用此形参,但不能进行重新赋值。
final static 用来修饰属性:全局常量
问题:代码块给final static 修饰的属性赋值,编译报错。
对于非静态代码块每创建一个对象,就执行一次非静态代码块,所有如果创建多个对象,也就会有多个赋值,跟final关键字相违背。
