您的位置:首页 > 编程语言

关于final关键字的在编程中的使用与说明

2013-10-31 22:38 232 查看
一、final用于构建不可变对象。

根据程序上下文环境,Java关键字
final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法
和变量

二、final用法

1、在class上加入final,表示此class不可以被继承,没有子类,final类中的方法默认是final的,常用于专用的工具类,或者业务实现类,以防止改变原来的实现。

public final class user{

}

2、在方法前加入final,表示此方法不能被子类的方法覆盖,但可以被继承,常用于专用的业务实现方法,不希望在其它用户继承此class的时候覆盖此方法的实现。

public class user{

private String userName;

public final String getUserName(){

return this.userName;

}

}

3、在变量(常量)前加上final,表示此变量只能初始化一次,后续不可以被修改,对于基础数据类型来说只能赋值一次,

对于对象来说,只能初始化一次,但是对于对象中的可变属性来说还是可以修改的。

final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。

final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据
成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

public class user{

public static final String SEX = "男";//静态变量

private final String userName = "pplive";//实例变量

private final List<String> infos = new ArrayList<String>();

private final int age;//可以先定义而不赋值,在构造方法中赋值

public user(){

this.age = 10;//在构造方法中赋值

}

public user(int iAge){

this.age = iAge;//在构造方法中赋值

}

public final String getUserInfo(){

final String sex = "女";//局部变量

return this.userName + "##" + sex;

}

}

4、final不能用于修饰构造方法

5、父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

6、final参数 :当方法参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

public void test(final String userName){
//userName是final类型的,值不允许改变的.
System.out.print(userName);
}

7
、static和final一块用表示什么

static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!

对于变量,表示一旦给值就不可修改,并且通过类名可以访问。

对于方法,表示不可覆盖,并且可以通过类名直接访问。

三、其它好处:

1、在JAVA内存模型中,final域能确保对象的初始化过程的安全性,从而可以不受限制的访问不可变对象,并在共享这个对象时无须同步。

2、在代码模块中,如果在只初始化一次对象的时候,在变量对象前加上final关键字,

可以让大家知道此对象在初始化后就不会再修改,可以避免此对象在后续代码编写中再进行赋值,这也是一种良好的编程习惯。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息