Java 中的 final 关键字
final
关键字主要用在三个地方: 变量、方法、类
1.修饰变量
对于一个final
变量:
-
如果是基本数据类型的变量,其值一旦初始化,就不能修改
final double PI = 3.14; PI = 3.1415;
此时会报错:Error:(6, 9) java: 无法为最终变量PI分配值
-
如果是引用类型的变量,对其初始化之后不能让其再指向别的对象,但是该对象属性可以改变
final StringBuilder sb = new StringBuilder("hello "); sb.append("world"); System.out.println(sb);
此时会输出:hello world
StringBuilder sb1 = new StringBuilder(); sb = sb1;
此时会报错:Error:(11, 9) java: 无法为最终变量sb分配值
2.修饰方法
用final
修饰的方法不能被重写
class father {
public final void fun () {}
}
class son extends father {
public void fun () {}
}
此时会报错:Error:(26, 17) java: package.son中的fun()无法覆盖package.father中的fun()
被覆盖的方法为final
3.修饰类
用final
修饰的类不能被继承,final
类中的方法都会隐式的指定为final
方法
final class father {
}
class son extends father {
}
此时会报错:Error:(18, 19) java: 无法从最终package.father进行继承