Java final 修饰符

作者: 就是杨宗 | 来源:发表于2017-09-29 01:41 被阅读13次

final有“终态”和“不可变”的意思,它可以修饰非抽象类、非抽象方法、变量和方法参数。

一、final类

用final修饰的类没有子类,所以不能够被继承。
在设计类的时候,如果这个类不需要有子类,类的实现细节不允许被改变,并且确信这个类不会被扩展,那么就设计为final类。

二、final方法

final方法不能被子类覆盖,但可以被继承。

  1. public和protected修饰的final方法
    由于用public和protected修饰的final方法对于子类而言具有可见性,所以子类不能覆盖它们。
  2. private修饰的final方法
    由于private修饰的方法对于子类而言不具有可见性,所以子类再实现一个签名一样的方法,只能称之为拓展,而不是覆盖。
  3. default的final方法
    没有用访问修饰符修饰的final方法,在本包子类中,不能覆盖,因为可见;而在其他包的子类中,由于不可见,可以拓展一个签名一样的方法。
三、final变量

用final修饰的变量相当于常量,只能赋值一次,以后不能再修改。final变量可以在声明的时候直接初始化,也可以先声明,而不赋初值,这种变量也称为final空白。

  1. final静态变量
    这种final空白要在static代码块里进行初始化。
  2. final成员变量
    要在构造函数里初始化。
  3. final局部变量
    在成员方法中,只能赋值一次。
四、final参数

方法的参数其实也是一种局部变量,它的作用域就是当前方法,当参数被final修饰时,我们可以读取该参数,但是无法改变参数值。

五、final和static

final static方法没有意义,因为static方法本来就不会被子类覆盖。
final static变量相当于“全局常量”。

六、final和abstract

不能连用,final不允许子类覆盖,而abstract则要求子类重写它,互相矛盾。

转载请注明如下内容:

文章来自简书,作者:就是杨宗
原文链接:http://www.jianshu.com/p/2f1763e72ecf

相关文章

  • Java中的final修饰符

    Java中的final修饰符 Java中final修饰符既可以修饰变量、方法,也可以修饰类。用final修饰的变量...

  • final修饰符

    final修饰符是java中比较简单的修饰符,但也是一个被误解最多的修饰符。final可以修饰变量,被final修...

  • Android开发面试题

    1、JAVA中final、finally、finalize的区别 ① final:关键字,可以作为修饰符修饰变量、...

  • java代码开发注意事项

    1、尽量指定类的final修饰符 带有final修饰符的类是不可派生的。 在Java核心API中,有许多应用fin...

  • No.6final修饰符详解

    final作为java中的非访问修饰符可用于修饰类,接口,变量,方法; 被final修饰的类: final可以修饰...

  • Java 代码性能优化收录

    1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用fi...

  • java 面试题1

    一、JAVA基础 1、简述你所知道的JAVA修饰符及各自的使用机制?(public、abstract、final、...

  • 牛客网学习笔记-day01

    Java修饰符大小 public>protected>default>private final方法不等同于pri...

  • 聊聊java中final那点事

    1.final是什么 final是一个java关键字,一个修饰符,可用于修饰变量,方法,修饰类. 2.final有...

  • Java中的String类能否被继承?为什么?

    不能被继承,因为String类有final修饰符,而final修饰的类是不能被继承的。 Java对String类的...

网友评论

    本文标题:Java final 修饰符

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