以下是我对final关键字的理解:
final可以修饰 类,属性,方法,局部变量
final在什么情况下我们可以使用?
1.当不希望类不被继承的时候
2.当父类中某个方法不被子类覆盖/重写(override)的时候
3.当不希望类中某个属性的值不被修改的时候
4.当不希望类中某个局部变量被修改的时候
使用final时候的注意事项:
1.final属性基本是一个常量
2.final修改的属性在定义时必须初始赋值,并且以后不能在修改
3.如果final修饰的属性是静态的,则初始化属性必须在定义时/静态代码块/静态方法,不能在构造器中(因为在类被加载的时候,首先静态属性/静态方法/静态代码块被调用,如果属性在构造器定义,会导致类加载时属性还没有定义)
4.final修饰的类不能被继承,但是依旧可以实例化,如果方法被final修饰,类没有被修饰,该类依据可以继承。类被final修饰后,方法就不用被修饰
5.final和stati搭配使用,效率大大提高,不会导致类加载
6.包装类(intger,Double,Float,Boolean,String等)都是被final修饰的类
总结:我感觉final就像一把锁,当它修饰对象的时候,对象就会失去一些自由被牢牢锁住