JAVA中的final关键字

本文详细介绍了Java中的final关键字,包括其用于创建不可变对象的作用、具体用法(如修饰类、方法和变量),并探讨了final变量的不同类型及初始化规则。此外还讨论了final带来的其他好处,例如确保对象初始化过程的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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关键字,

可以让大家知道此对象在初始化后就不会再修改,可以避免此对象在后续代码编写中再进行赋值,这也是一种良好的编程习惯。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值