代码演示1:
int i = 10;
//重新赋值
i = 20; //到此不报错
final int k = 100;
//重新赋值
k = 300; //Error:(11, 9) java: 无法为最终变量k分配值
final int q ;
q = 100; //程序正常,不报错。
小结:final 修饰的变量只能赋一次值,不能二次赋值。
如果final 修饰的变量是一个 “引用“ 会怎样?
final 修饰的变量只能赋一次值,"引用" 也是一个变量,所以也不能二次赋值。
final 修饰的实例变量必须手动赋值,系统不会给赋默认值。
class W1{
//实力变量。
//实例变量没有手动赋值的话 系统会自动赋值。
final int age = 1;
//不给 age 赋值,会报错。
}
一个类 不写构造方法,会有一个默认的、自带的无参构造方法。
class W1{
//实例变量
final int year;
//构造方法
public W1(){
year = 18; //没有在赋18之前再赋默认值。
//只要赶在系统赋默认值之前赋值都行,程序都不会报错。
}
}
代码演示2:
public class F002 {
public static void main(String[] args) {
B3 q1 = new B3();
q1.B3(); //输出结果: A3的方法
} // B3的方法
}
class A3{ //class A3 前面加个final 后,程序报错,Error:(14, 18) java: 无法从最终finallll.A3进行继承。
public void A3(){
System.out.println("A3的方法");
}
}
class B3 extends A3{
public void B3(){
super.A3();
System.out.println("B3的方法");
}
}
小结: final 修饰的类 不能被继承。
final 修饰的方法不能被重写(覆盖)。
原文:https://www.cnblogs.com/caoxingxing/p/13630479.html