final 关键字主要用于 修饰类、类成员、方法、以及方法的形参。
一. fianl修饰类:
1. 该类是最终类,不能被继承。
2. 将父类加final修饰,子类继承,就会报错。
3. JDK中 String 类是 final 的。Java8中基本类型的包装类(如:Integer)也是final的。
final类的作用
1. 为了防止代码功能被重写
2. 该类没有必要进行扩展
二. final修饰成员属性:
说明该成员属性是常量,不能被修改。一般情况下用法如下:
public static final double PI = 3.14;
1. public :访问权限最大
2. static :内存中只有一份
3. final :是一个常量
4. 常量名大写
5. 必须初赋值。
若使用类名.成员。
修改该成员的值,报错。--常量不能被修改
指向类成员变量有以下两种情况
1. 修饰基本数据类型,final使值不可改变
2. 修饰对象引用,final使其引用指向恒定不变,无法让其指向一个新的对象,但是对象自身的属性却可以被修改。
final和static组合使用
1. 该关键字一般和static关键字结合使用,因为常量可以优先加载,不必等到创建对象的时候再初始化。
2. final和static可以互换位置,不影响修饰的结果
3. 常量一般被修饰为final
三. final修饰方法:
1. 该方法是最终方法,不能被重写
2. 当一个类被继承,那么所有的非私有函数都将被继承,如果函数不想被子类继承并重写可以将该函数final修饰
3. 当一个类中的函数都被修饰为final时,可以将类定义为final的类。
四. final修饰方法的参数:
1. 传入的参数值不可变。
2. 若是八大基本类型,则他的值是不可以改变的,也就是不能做相关运算改变它的值。
3. 若传入的是对象的引用,那么此引用指向的对象不可以改变。无论把这个参数传入什么方法,它始终指向传入的对象。