1、final在修饰类时,不能被其他类继承,否则编译错误Cannot inherit from final ‘com.bjpowernode.day308.Fu’
2、final在修饰成员变量时,称为常量。系统不会再自动赋于其默认值,必须手动给其赋初始值才行。否则编译错误Variable ‘A’ might not have been initialized 。
手动赋值有两种情况
(1)直接在定义变量时 赋值
public final class Fu {
final int A=10;
}
(2)在构造方法中为这个常量初始化赋值。
public final class Fu {
final int A;
public Fu(int a) {
A = a;
}
}
但值得注意的是,如果代码中又写了一个无参的构造方法,则在无参构造方法中也要手动赋值,也就是说,必须保证在所有情况下,
这个常量都能被赋上值才行。
3、final 修饰局部变量 ,可以先声明不赋值 如下。
class Zi extends Fu{
public static void main(String[] args) {
final int a;
}
}
但值得注意的是 此种情况下 final修饰后 不能这样写 会编译错误 提示为初始化a
class Zi extends Fu{
public static void main(String[] args) {
final int a=10;
a=a;//初始化错误
}
}
如果去掉final 则不会报错,因为a可以再次被赋值
class Zi extends Fu{
public static void main(String[] args) {
int a=10;
a=a;
}
}