final关键字

来源:互联网 发布:帝国cms技巧 编辑:程序博客网 时间:2024/06/01 10:53

参考书籍:Java范例开发大全

1、final数据

      1、一个永不改变的编译时常量。

      2、一个在运行时被初始化的值,而你不希望它被改变。

      对于编译时常量这种情况,编译器可以将该常量值代入任何可能用到它的计算式中,也就是说,可以在编译时执行计算式,这减轻了一些运行时的负担。在java中,这类常量必须是基本数据类型,并且以关键字final表示。在对这个常量进行定义时,必须对其进行赋值。

      一个既是static又是final的域只占据一段不能改变的存储空间。

      当对对象引用而不是基本类型运用final时,其含义会有一点令人迷惑。对于基本类型,final使数值恒定不变;而对于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。然而,对象其自身却是可以被修改的,java并未提供使任何对象恒定不变的途径(但可以自己编写类以取得使对象恒定不变的效果)。这一限制同样适用数组,它也是对象。

2、空白final

      java允许生成“空白final”,所谓空白final是指被声明为final但又未给定初值的域。无论什么情况,编译器都确保空白final在使用前必须初始化。但是,空白final在关键字final的使用上提供了更大的灵活性,为此,一个类中的final域就可以做到根据对象而有所不同,却又保持其恒定不变的特性。

3、final参数

      java允许在参数列表中以声明的方式将参数指明为final。这意味着你无法在方法中更改参数引用所指向的对象。

      当基本类型的参数被指明为final时,你可以读参数,但却无法修改参数。这一特性主要用来向匿名内部类传递数据。

4、final方法

      使用final方法的原因,把方法锁定,以防任何继承类修改它的含义。这是处于设计的考虑,想要确保在继承中使方法行为保持不变,并且不会被覆盖。

      final和private关键字:

             类中所有的private方法都隐式地指定为是final的。由于无法取用private方法,所以也就无法覆盖它。可以对private方法添加final修饰词,但这并不能给该方法增加任何额外的意义。

5、final类

      当将某个类的整体定义为final时(通过将关键字final置于它的定义之前),就表明了你不打算继承该类,而且也不允许别人这样做。换句话说,出于某种考虑,你对该类的设计永不需要做任何变动,或者出于安全的考虑,你不希望它有子类。

      final类的域可以根据个人的意愿选择为是或不是final。不论类是否被定义为final,相同的规则都适用于定义为final的域。然而,由于final类禁止继承,所以final类中所有的方法都隐式指定为是final的,因为无法覆盖它们。在final类中可以给方法添加final修饰词,但这不会添加任何意义。

原创粉丝点击