Java学习笔记之四《final关键字》

来源:互联网 发布:unix网络编程 目录 编辑:程序博客网 时间:2024/04/28 02:36

Java核心思想学习——

final关键字的用法:

表示无法改变。使用final的三种情况:数据、方法和类。

final数据:

定义常量:基本数据类型——定义时必须赋值;

定义对象:final将使得引用恒定不变——引用被初始化指向唯一对象,无法改变其指向;对象自身可以变化,如数组也是一种引用。

final数据的赋值必须在域定义or构造器中使用表达式赋值,保证使用前总被初始化。

关于static final域:【只占据一段【不能改变的】存储空间!属于编译期常量,使用大写表示,下划线分隔单词。

static final int VALUE_ONE = 20;

空白final:被声明为final但未给定初值的域;

一个类中的final域可以根据对象的不同而不同,在对象生命期中保持恒定不变。


final参数:

java允许在参数列表中以声明的方式将参数指定为final。指定为final的参数将无法在方法中更改参数引用所指对象——通常用于向匿名内部类传递数据。


final方法:

用于锁定方法,防止被继承类修改:保持不变,不被覆盖!

关于效率问题:编译器将针对方法的所有调用转为内嵌调用,以方法中实际代码的副本替代方法的调用;消除调用的开销,但会膨胀代码。

不要使用final方法进行代码优化。

仅仅在需要明确静止覆盖时,才设置finla方法。

注意所谓【覆盖】——

只有当某方法是基类接口的一部分,且必须是“能将一个对象向上转型为其基类并调用相同方法时——才存在覆盖!

对于private方法:并不是基类接口,在导出类中生成同名方法——并不属于方法,只是一个同名的导出类方法而已!

所以:覆盖是针对基类接口方法而言的!


final类:

final class className

final类不允许继承!类中所有方法隐式定义为final——无法覆盖!

0 0
原创粉丝点击