您的位置:首页 > 其它

关于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,这就以为着无法再方法中 更改参数引用指向的对象
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类不能被被继承
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: