1. final可以修饰的内容
类(最终类)
方法(最终方法)
变量(最终变量)
2. final类
final修饰类:此类不嫩被继承
String、Math、 System均为final修饰的类,不能被继承
final修饰的方法:此方法不能被覆盖
意为最终方法,不支持子类以覆盖的形式修改
3. fina变量
final修饰变量:此变量值不能被改变(常量)
所有被final修饰的变量只能赋值一次,值不允许被改变
4. 实例常量
public class TestFinal {
public staitic void main(String[] args) {
new Student();
}
}
class Student{
final = String name;//"zhu";报错:可能尚未初始化变量name
{
//name = "zhu";
}
publilc Student() {
//name = "zhu";
}
}
实例常量不再提供默认值,必须⼿动赋予初始值。
赋值时机:显示初始化、动态代码块、构造⽅法。
注意:如果在构造⽅法中为实例常量赋值,必须保证所有的构造⽅法都能对其正确赋值
public class TestFinal {
public static void main(String[] args) {
System.out.println(Student.sss);
}
}
class Student{
static final String sss;//报错:可能尚未初始化变量sss
static {
//sss = "zhu";
}
}
静态常量不再提供默认值,必须⼿动赋予初始值。
赋值时机:显示初始化、静态代码块。
5. 对象常量
final修饰的基本类型:值不可变
final修饰的引用类型:地址不可变