美文网首页
java final学习记录

java final学习记录

作者: jinelei | 来源:发表于2019-02-18 14:17 被阅读0次

    final可以用来修饰类、成员、方法。

    1. 修饰类

    通常表示该类不允许被继承,譬如String。

    • final类中的成员方法都会被隐式地指定为final方法
    • final类中的成员变量可以根据需要设为final。

    2. 修饰方法

    《java编程思想》 :
    使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。
    通常称之为静态方法,是没有this对象的方法,因此不能访问任何非静态变量和方法。也就是在方法中不能使用this、super关键字。

    • class的private方法会被隐式的指定为final(因为该方法不能被子类所访问)
    • abstract与final不能同时使用。final阻止重写和继承的

    3. 修饰变量

    通常称之为常量,只能被赋值一次,赋值后值不再改变。必须要显示初始化。这里有两种初始化方式,

    1. 变量声明的时候初始化
    2. 在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。
    • 只有在编译期间能确切知道final变量值的情况下,编译器才会进行这样的优化,如果final变量赋值是指向一个函数的话也不能优化。
    • 引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的
    • interface的成员变量将会被隐式的指定为final
    • final类型的参数:java采用值传递,即便不用final,也不影响方法外的变量。

    相关文章

      网友评论

          本文标题:java final学习记录

          本文链接:https://www.haomeiwen.com/subject/uusaeqtx.html