目录
- final修饰类
- final修饰方法
- final修饰变量
- final面试例题
- 个人总结
正文
- final修饰类
public class C1 extends C2 {
}
final class C2 {
}
这里将不通过编译期,因为final修饰类无法被继承
- final修饰方法
public class C1 extends C2 {
public final void f1() {
}
}
class C2 {
public final void f1() {
}
}
编译不通过,final修饰方法无法被重写
常用于功能已经确定下来,不希望被修改
- final修饰变量
public class C1 {
public final int AA;
}
final修饰的变量为常量,表示变量值不可变
允许初始化,但初始化后不能再修改
习惯上将final修饰的变量名写成大写字母
final修饰变量不会被默认初始化
- final面试例题
/** 下面写法正不正确 */
public class C1 {
public static void main(String[] args) {
Other o = new Other();
new C1().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
正确,final修饰的是类对象,但属性值还是可以改变的
- 个人总结
final修饰类比较少,因为其违背了Java的基本特征继承
用static final修饰变量:全局常量(推荐使用)