final:
final修饰的变量为常量,只能赋值一次,赋值后不可修改。 final方法不能被子类重写 final类不能被继承
1、final变量
必须初始化,初始化必须在声明时或者构造方法中直接赋值。不能通过函数赋值。
2、final方法
final方法不能被子类覆盖
好处:1、防止子类修改,改变它本身的意义。 2、编译器执行final方法时效率更高(会使用inline机制) 3、所有private方法其实都是final的。所以无法被覆盖。
3、final类
final类不能被继承,final类的成员方法都是final的,因为它没有机会被覆盖。在自己的某个类不需要有子类,类的实现不允许改变也不会被扩展的时候就可以使用final来修饰这个类。
4、使用static final修饰的常量,实例本身不能改变。但是对于一些容器类,比如ArryList、HashMap的实例变量,容器本身不能改变但是可以修改容器里存放的数据。