final 关键字
1、是java语言中的一个关键字。
2、表示最终的,不可变的。
3、可以修饰遍历以及方法,还有类等。
4、修饰的类无法被继承。
// B类继承A类,对A类进行扩展,如果不想他人在A类基础上进行扩展,可以加上 final 关键字,那么此时的A类将无法被继承。
final class A {}
// 报错 无法从最终A进行继承。
class B extends A{}
4、修饰的局部变量,只能赋一次值,一旦赋值将无法再重新进行赋值操作。
5、修饰的方法无法被覆盖、重写。
6、修饰的引用只能指向一个对象,一旦指向后,就永远指向该对象,无法被改变。
7、修饰实例变量,系统不管赋默认值,必须要求手动赋值。实例变量在new对象执行构造方法过程中进行赋值。
class User{
// 实例变量 未初始化时,系统会自动赋值,int 类型则默认为 0
// 错误:变量age未在默认构造器中初始化
final int age;
// 正确写法
// 实例变量
final double weight;
// 构造方法
public User(){
this.weight = 100; // 在系统进行赋默认值之前进行赋值。
}
}
class Chinese{
// 实例变量使用了final,意味着该实例变量不会随着对象的变化而变化,但是每创建一次对象,就会声明一次 country ,从而浪费了内存。
final String country = "中国";
// 正确写法
static final String COUNTRY = "中国";
// 结论:final修饰的实例变量一般添加static修饰,static final 联合修饰的变量成为"常量",
// 常量名建议全部大写,每个单词之间采用下划线连接。
}