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

一、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关键字,
可以让大家知道此对象在初始化后就不会再修改,可以避免此对象在后续代码编写中再进行赋值,这也是一种良好的编程习惯。

转载于:https://my.oschina.net/20076678/blog/173163

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值