关于final
2016-03-15 19:34
344 查看
1.final数据,分为两种情形:(1)一个永不改变的编译时常量:这种常量必须是基本类型的,而且必须在声明定义时就要给它赋值
(2)一个在运行时被初始化的值,而你不希望它被改变
注:(1)对于基本类型的final变量,数值不变,但对于final的对象引用,final只能保证引用不变,一旦这个引用被初始化指向一个对象,就无法再指向其他对象了,但是对象 本身是可以被修改的。
(2)在匿名类中所有变量都必须是final变量;
(3)被static和final同时修饰的域只占一段不能改变的储存空间
空白final:指的是被声明为final但是又没有给定初始值的域
final参数:Java允许在参数列表中以声明的方式将参数指明为fianl,这就以为着无法再方法中 更改参数引用指向的对象
2 final方法: 不能被重写的方法
类中所有的private方法都隐式地指定为final的,由于无法读取private方法,所以也就无法覆盖它。如果子类中有定义一个与父类有相同方法名、相同形参列表、相同返回值类型的方法,那也不是重写父类的方法,只是在子类中定义一个新的方法。
3.dial类不能被被继承
(2)一个在运行时被初始化的值,而你不希望它被改变
注:(1)对于基本类型的final变量,数值不变,但对于final的对象引用,final只能保证引用不变,一旦这个引用被初始化指向一个对象,就无法再指向其他对象了,但是对象 本身是可以被修改的。
(2)在匿名类中所有变量都必须是final变量;
(3)被static和final同时修饰的域只占一段不能改变的储存空间
空白final:指的是被声明为final但是又没有给定初始值的域
final参数:Java允许在参数列表中以声明的方式将参数指明为fianl,这就以为着无法再方法中 更改参数引用指向的对象
class Gizmo{ public void spin(){ } } public class FinalArguments { void with(final Gizmo g){ // g = new Gizmo(); } void without(Gizmo g){ g = new Gizmo(); g.spin(); } void f(final int i) { // i++; } int g(final int i){ return i + 1; } public static void main(String[] args) { FinalArguments bf = new FinalArguments(); bf.without(null); bf.with(null); } }在f()、g()方法中,可以读取参数,但却无法修改参数,这一特性主要用来向匿名内部类传递数据.
2 final方法: 不能被重写的方法
类中所有的private方法都隐式地指定为final的,由于无法读取private方法,所以也就无法覆盖它。如果子类中有定义一个与父类有相同方法名、相同形参列表、相同返回值类型的方法,那也不是重写父类的方法,只是在子类中定义一个新的方法。
3.dial类不能被被继承
相关文章推荐
- 最大子序列-NlogN
- 关于“只有注册用户登录后才能阅读该文”
- 20160310第一题
- 图像识别数据库
- hdoj 5641 King's Phone 【模拟】
- LinuxMySQL主从配置
- 网易2016年研发工程师编程题(1)
- Android Studio的*.9.png报错问题-Crunching Cruncher
- 使用vagrant安装linux环境
- Android依赖注入库Dagger的使用
- bzoj 2456: mode 【思维 求众数】
- A4988 步进电机加速控制算法的尝试(上)――arduino实现篇
- 如何将vector中的数据写入到txt中
- Codeforces 46D Parking Lot 枚举
- 【BZOJ1878】【codevs2307】HH的项链,莫队算法
- 最大子序列-N
- PAT 1025 反转链表 (25) 解题报告
- Gradle(ubuntu) 环境搭建
- ORACLE与.NET类型对应关系(转)
- Cisco/China Mobile的新网络架构