final关键字
修饰数据、方法、类
01
修饰数据
一、编译期常量:在编译期将变量值代入任何可能用到它的计算式中,在编译期执行计算式,减少运行时的负担。这类常量在java中必须是基本数据类型并且用final修饰,且定义的时候就需要初始化


二、final修饰基本数据类型,值不可以被修改
三、final修饰对象引用,引用不可以改去指向别的对象,但是引用本身的值是可以改变的

四、典型的对常量的定义的方法
public static final int VALUE_ONE=3;
public:可以用于包之外
static:在内存中只有一份
final:表示为常量,值不可以修改
变量名大写,多个单词之间用下划线分割
五、final定义的变量的初始化的两种方法

方法一:定义的时候初始化
方法二:定义的时候不初始化,但是必须在构造方法中进行初始化,确保在使用这个常量前进行初始化
02
修饰方法
使用final修饰方法的原因:
一、防止继承类修改自己,不被子类重写
类中所有的private方法都隐式的指定为final;既:private 修饰方法和private final修饰方法效果是一样的
二:final修饰方法的重写问题:
带着这个问题看下面的代码:不是说的final修饰的方法不可以被重写呢,那为什么Son2这个子类的方法还可以这样写?这些方法是不是重写的方法呢?

测试一下:测试方法为将子类向上造型为父类,然后调用所谓的重写的方法,如果能调用出来则说明是重写的方法,否则就不是

由图可知:show方法不是重写的方法,而sayHi才是重写的方法。
三:可以通过注解 @Override在编译期进行判断是不是重写的方法
03
修饰类
final修饰类的两个目的
一、安全,不希望别人继承
二、确保这个类以后不再需要进行修改可以设置为final
发现更多精彩
关注公众号






