浅谈final
来源:互联网 发布:制影集的软件 编辑:程序博客网 时间:2024/05/16 15:49
1> Final关键字表示的含义是“无法改变的”。
2> 它可以修饰:数据,方法和类。
3> 【final修饰——数据】
a> 应用范围
一个永不改变的编译时常量。(必须是基本数据类型)
一个在运行时被初始化的值,而你不希望他被改变。
b> 一个既是static又是final的域只占据一段不能改变的存储空间。
c> final+基本数据类型——>表示数值恒定不变。
final+对象引用类型包含数组——>表示引用恒定不变,对象自身却是可以改变的。
d> static final ——>编译期常量
e> 不能因为某数据是final的就认为在编译时可以知道它的值。例如:
Private static Random rand = new Random(47);
f> final定义为静态和非静态的区别。
在编译期是这个两种在编译器眼中是一样的,只有在运行期初始化时,才有区别。一个是只生成唯一的值,另一个则会随着类被实例化N次,而产生N个值。
g> 空白final
private final int i; 即在声明时不给它赋值,这样在构造方法中给它赋值,就可以做到根据对象不同而有所不同,但是却又能保持其恒定不变的特性。
要在构造方法中对i进行赋值。
h> final参数
你可以读参数,但是却不允许修改参数,这一特性主要用来向匿名内部类传递数据。
4> 【final修饰——方法】
a> 使用final修饰方法只有两种可能性:
第一种:把方法锁定,防止任何继承类修改它的含义。
第二种:提高效率(针对老的jdk,在线的jdk5以上版本已经失去作用)。
b> 所有的private方法都隐式的指定为final,但也可以对private方法增加final添加词,但这并不能给方法增加任何额外的意义。例如“
private final void f() 相当于 private void f() ,如果有子类,子类也可以有跟父类一样的私有方法f(),但是这却并不是“覆盖“,只是和父类所属方法f()一样名称的私有方法而已。
5> 【final修饰——类】
a> 当将某个类的整体定义为final时,就表明了你不打算继承该类,也不希望它有子类。
final class a{
… …
}
b> 注意:final类的域可以根据个人的意愿选择为是或者不是final。不论类是否被定义为final,相同的规则都适用于定义为final的域。然而,由于final类禁止继承,所以final类中所有的方法都隐式指定为final的,因为无法覆盖它们。在final类中可以给方法添加final修饰词,但这不会增添任何意义。
- 浅谈Final
- 浅谈final
- 浅谈-----final关键字
- 浅谈Java Final关键字
- 浅谈Java的final关键字
- 浅谈java中final数据
- 浅谈java关键字static、final
- 浅谈Java中的final关键字
- 浅谈Java中final,finalized,finally
- Java中的final,finalized,finally浅谈
- 浅谈Java中final,finalized,finally
- 浅谈Java中final,finalized,finally
- 浅谈Java中final,finalized,finally
- 浅谈Java中final,finalized,finally
- 浅谈Java中final,finalized,finally
- 浅谈final,finalized,finally ,static 用法
- 浅谈Java中final,finalized,finally(转)
- 浅谈Java中final,finalized,finally
- 列表中的修改在单独页面呈现 实现方法
- Shark:强大的开源C++机器学习库
- 【设计模式】六大原则
- Erlang Trace Tool Builder心得
- Hadoop- Hbase 分布式部署碰到的问题小结
- 浅谈final
- MFC中设置静态文本的字体颜色、背景透明以及解决字体重叠
- [Android]ListView性能优化之视图缓存
- 探索 带有虚函数的单继承的类层次的子类对象的构造过程
- Json学习札记
- hdu 1064 水题
- Convert Sorted Array to Binary Search Tree
- 指针和数组的区别
- 单调队列