这篇来说说final关键字.
final的意思是"最终的,也就意味着现在看到的是什么以后就一直是什么了:不能被修改.不过除了不能被修改还有其他一些特性,下面就来介绍一下.
final类
我们常用的几个类,如System,String或Integer,都是final类.
public final class System{}
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {}
public final class Integer extends Number implements Comparable<Integer> {}
在编写代码时,我们不能在extends关键字后面加上它们,提示不能从XXX类继承.也就是final类不能有子类,所以诸如抽象类与接口等需要子类实现的类型就不能为final.
一旦类被声明为final,它里面所有的方法与变量都会隐式的声明为final,所以在final类中不必再声明final方法或变量.
final方法
final方法不能被重写,final类中的所有方法都是final的.
最主要的目的在于,避免这个方法被修改,继承这个类之后,这个方法不能被重写,就可以将它声明为final的,<Java编程思想>中指出,private方法也会被隐式的声明为final的,这个没有任何问题.但是你在子类中"重写"这个方法的时候,不会提示任何错误,因为这是一个子类的方法,不是重写的方法,在IDE中也不会看到有重写的提示:
所以在重写方法的时候记得加上@Override.:它会帮你检查是不是真的重写了.
关于将方法声明为final会提高速度的说法,已经过时了.
final变量
前面提到的常量就是final的,它不能被修改,只能读取.如果在参数中声明了final参数,那这个参数也不能在方法内被修改.
final变量必须在声明时就赋值.