final关键字

三种情况:final数据、方法和类

一、final数据

  1.   使用场景举例:
  •     一个永不改变的编译时常量。(编译时常量必须是基本数据类型,必须在这个常量定义时赋值)
  •       一个在运行时被初始化的值,而不希望它被改变。

对于基本类型,final使数值恒定不变;对于对象引用,final使引用恒定不变,然而对象其自身却是可以被修改的。

定义为static final:static强调只有一份,final则说明是一个常量。

定义为final的常量,并不表示在编译时就可以知道它的值,它也可能在运行时被初始化。

 

2.空白final

3.final参数

  指定为final的参数,表明在方法中无法更改。

二、final方法

1.使用final方法的原因有两个:

    • 把方法锁定,以防止任何继承类修改它的含义。
    • 效率原因,编译器将final方法转为内嵌调用,以提高效率,但是当方法很大时无效。

2.final和private关键字

类中所有private方法都隐式地指定为是final的。由于无法取用private方法,所以也就无法去覆盖它。

@Override注解可以解决该问题。

三、final类

将某个类的整体定义为final时,表明该类不能被继承。

也就是说,该类的设计不能做任何改动,或者出于安全考虑,定义者不希望该类有子类。

final类会把它所有的方法都隐式指定为是final的,因为无法覆盖它的方法。

 

posted @ 2017-02-10 09:11  Apollo_zhanghongbo  阅读(289)  评论(0编辑  收藏  举报