final关键字用法
1、修饰类
- 当用final去修饰一个类的时候,表示这个类不能被继承。
- 注意:
- final类中的成员方法都会被隐式的指定为final方法。说明:在自己设计一个类的时候,要想好这个类将来是否会被继承,如果可以被继承,则该类不能使用fianl修饰,在这里呢,一般来说工具类我们往往都会设计成为一个final类。在JDK中,被设计为final类的有String、System等。代码:
2.修饰方法
- 被final修饰的方法不能被重写。
- 一个类的private方法会隐式的被指定为final方法。
- 亦即此方法不能被重写(可以重载多个final修饰的方法)。此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法。因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是相当于在子类中重新定义了新的方法。
3. 修饰成员变量
-
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
-
方式一:声明final变量和赋初值一起进行。如:
-
方式二:或者在声明final变量后,紧接着赋初值(在初始化代码中进行赋初值)如下图:
-
【注意:】否则声明变量时,就会出现编译错误:
-
如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
-
如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。
4. 修饰局部变量
- 声明时不会出现编译错误,但是使用时就会出现编译错误