final修饰符:
可以修饰属性、方法、类;
(1)修饰类时,说明该类不能被继承了;
final class A{ //使用final定义的类不能被继承
}
class B extends A { //错误,不能继承使用final声名的类
}
结果:
Error:(3, 17) java: 无法从最终A进行继承
(2)修饰方法时,该方法不能被覆写
class A{
//使用final声名的方法不可以被重写
public final void foo() {
System.out.println("hello");
}
}
class B extends A { //错误,不能复写用final声名的方法
public final void foo(){
System.out.println("AAA");
}
}
结果:
Error:(8, 23) java: B中的foo()无法覆盖A中的foo()
被覆盖的方法为final
(3)修饰常量时,常量不可以被改变
class A {
public final String a = "HELLO"; //使用final声名的变量就是常量
public final void foo() {
a = "WORLD"; //错误,常量不可修改
}
}
结果:
Error:(4, 9) java: 无法为最终变量a分配值
除此之外,final还可以修饰局部变量和形参;但是不能单独修饰代码块。