Java final 修饰符

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,134评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,948评论 0 62
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,075评论 0 2
  • 1、.java源文件: 一个以”.java“为后缀的源文件:只能有一个与文件名相同的类,可以包含其他类。 2、类方...
    Hughman阅读 5,566评论 1 9
  • 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个publ...
    岳小川阅读 4,509评论 0 2

友情链接更多精彩内容