java中final关键字的使用
final数据:
被final修饰的数据,如果是基本类型,那么它的值是恒定不变的;如果是对象引用,那么引用是恒定不变的,始终指向一个对象,但对象本身可被修改。
a. final域:编译时常量:既是static又是final的域,该变量全用大写字母命名,字与字之间用下划线分开,运行时被初始化的不变值。
b. 空白final:被声明为final但又未给定初始值的域(构造器中初始化),final域必须在域的定义处或者每个构造器中用表达式赋值。如果未被初始化,则不能被使用。(对于没被final修饰的成员,会默认初始化)
c. final参数:形参中被final修饰的参数。基本类型:参数只读,不能修改;引用:不能更改引用所指向的对象
final方法:
a. 确保继承时基类的方法不会被导出类覆盖。如果基类的某个final方法对导出类可见,那么在导出类中覆盖该方法,则编译出错。如果基类的某个final方法对导出类不可见,那么它只是具有相同的名称而已,并没有覆盖该方法,只是生成了一个新的方法。
b. 关闭动态绑定,提高效率
final类:
将整个类定义为final时,那么该类就无法被继承。 final类的域可以定义为final,只表示不能被修改,final类的方法都隐士指定为final,无法覆盖。