一提到java中的final就想到常量、不可变,当博主看到《Thinking in Java》中对final的讲解后有些领悟,现记录一下:java
1)final数据对象
一个永不改变的编译时常量,一个在运行时被初始化的值,而且不可改变,一个既是static又是fianl的域只占据一段不能改变的存储空间。注意对于对象的引用,final是指这个引用不可改变,而非改对象不可改变。继承
2)空白final编译
所谓空白final是指被声明为final但又没有初始值得域。java是容许声明的,可是该final在使用前必须被初始化。引用
3)final参数方法
Java容许在参数列表找那个声明参数为final形式,这也意味着你没法改变参数所引用的对象数据
4)final方法static
使用final方法是把方法锁定,防止任何继承类修改它,即该方法不会被覆盖。参数
5)final和private
类中全部的private方法都隐式的指定为final的(private方法没法被覆盖,因此private 添加final是多余的 )
6)final类
final类禁止继承,因此final类中全部的方法都隐式的指定为fianl的(没法覆盖它)。