final、static和static final区别和使用
1.final关键字
final关键字修饰变量:
1.这个变量必须在构造对象时就能够初始化
2.如果是基本数据类型的变量,那么这个变量一旦初始化就不能更改,相当于一个常量
3.如果是引用数据类型的变量,则初始化后就不能更改它的引用,不过引用对象变量的值可以更改
final关键字修饰方法:
1.表明这个方法不能被子类重写,防止类修改它的含义
与static比较都不能重写但可以被子类继承调用,不同在于static可以写一个同名方法隐藏父类的方法,而final不行
与private比较,private无法被子类继承,可以在子类中写一个新的同名方法,而final修饰的可以被子类继承调用,但final不能被重写,不能被修改,也就不能写一个新的同名方法。
使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final。
final关键字修饰类:
1.表明这个类不能被继承
2.final类中的所有成员方法都会被隐式的指定为final方法,但成员变量可是final也可