Java基础之Final关键字

来源:互联网 发布:java 工程师要考吗 编辑:程序博客网 时间:2024/06/05 13:50

Final关键字可以理解为不可改变的,不可被继承的。

Final关键字可以修饰变量(成员变量、局部变量)、方法、类

1. final修饰变量

使用Final来修饰的变量,就是告知编译器这的数据是恒定不变的。

这个变量可以是基本类型,他往往是编译器常量,如果他是编译器常量,那么他就必须在定义的时候赋初值,通常用static final关键字类修饰他。

这个变量也可以是引用类型,这个时候就是说制定引用变量不可以指向另外的对象。但是需要注意的是,对象本身是可以改变的,我们可以使用另一个非final的、指向该对象的引用对对象进行修改。

需要注意的是,并不是说final定义的变量在编译器就可以知道它的值,比如一个随机数,只有在运行的时候才真正的知道它的值。

final关键字修饰成员变量,必须在定义出赋初值或者在构造器中赋初值。这就是说final变量在使用前就已经被初始化。

final关键字修饰局部变量,通常出现在方法参数上,当一个方法的参数是final修饰的,那么就是说,在这个方法的作用域内,都不可以改变参数引用所指向的对象。

2. final修饰方法

使用final来修饰方法的直接原因就是阻止继承关系中的子类重写。如果你的方法不希望将来这个类的子类修改了方法的含义,那么就用final将他锁定起来吧。

注意:据说在以前使用final来修饰方法还有一个原因就是提升效率...

3. final修饰类

定义为final的类,往往是作者不打算自己或者其他任何人继承这个类,别人对这个类的设计不需要做任何修改,总之,finall类是不可被继承的

注意:我们上文说的final方法是非覆盖的含义,那么,final类中的方法默认的都是final修饰的,因为final类是非继承,因此他的方法必定不会被重写。


0 0