首页 > 代码库 > final修饰符的难点记录

final修饰符的难点记录

      今天看到了final字段这块,把不会的或者难点记录下来。

第一,空白final。

       书上说的有点绕,说空白final更灵活。但之前又说过final变量必须进行初始化,这是什么意思呢,二者难道有冲突吗?

其实空白final的核心就是:构造器赋值。

<script src=http://www.mamicode.com/"https://code.csdn.net/snippets/401447.js"></script>

第二,static final 同 final 的区别。

        以前我提过,static字段只会初始化一次,无论你创建多少个对象。那么static final 和 final的区别也在此。

<script src=http://www.mamicode.com/"https://code.csdn.net/snippets/401503.js"></script>

执行结果为:

第一次初始化 a = 33
第二次初始化 a = 64
第一次初始化 b = 20
第二次初始化 b = 20

第三,关于final修饰的方法作用—方法锁定、效率。


       方法锁定简单,防止子类继承,再重写之。例如 String

       效率这块,现在的JAVA 5以上的版本,JVM会自动处理这块的效率,所以,不需要考虑为了加快调用速度而是用final。

第四,private final修饰。

       当你要隐藏某种实现,并确保这种实现在任何情况都不需要修改的情况下,才能使用这个。

第五,final类。

       不想被任何人继承。同第四点类似,只是范围扩大到类。final类中所有的方法默认为final方法、所有的变量默认为final变量。