一、fianl 修饰的类
用 final 修饰的类,不允许被继承,也不会再有子类。试考虑下列代码段:
final class Test{
}
class FinalTest extends Test{
}
编译器会抛出如下错误类型:The type FinalTest cannot subclass the final class ,告诉我们“FinalTest这个类无法继承 final 修饰的类”。
二、final 修饰的方法
final 不能用于修饰构造方法,且 final 修饰的其他方法同样不能被重载,无法复写。例如下列代码段:
class Test1{
public final void fun(){}
}
class Test2 extends Test1{
public void fun(){}
}
这次抛出的异常为“cannot override the final method from fun”,表明 fun 方法不能被子类重写。
三、final 修饰的变量
final 可以修饰局部变量或成员变量,被修饰的变量不能再次被赋值,可以看作常量。在 final 修饰引用型变量时,其不能再指向其他对象,但所指向变量可以被重新赋值。