java中final修饰符,修饰变量、方法、类的详细用法

本文详细解析了Java中的final关键字,涵盖其在变量、方法和类上的使用。final修饰的变量成为常量,方法禁止重写,类无法被继承,强调了final在确保代码稳定性和安全性方面的作用。

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

final可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和

赶时间的可以看以下总结:
final(最终态)修饰我们的成员方法、成员变量、类,特点如下:

  • 修饰变量:该变量的值,不能被修改,必须初始化(手动赋值)
  • 修饰方法:该方法,不能被重写
  • 修饰类:该类,不能被继承

1, final 修饰变量:

final修饰的变量表示此变量是“最后的、最终的”含义。一旦定义了final变量并在首次为其显示初始化后,final修饰的变量值不可被改变。
所以,final修饰变量时就成了 常量(一旦赋值不能改变)
常量名一般要全部大写;

final int  BOY = 1;

这里需要注意以下几个问题:

final修饰的变量,无论是类属性、对象属性、形参还是局部变量,这些变量都是需要进行显示初始化(即为其显示指定初始值)。对于final属性来讲,系统不会提供默认值,

对于final修饰的形参,由于是实参传递过来的,很好理解。

对于final修饰的局部变量,与未用final修饰的变量一样,都是需要显示初始化。即局部变量都是需要显示初始化的。

对于一般的类属性和对象属性,由类和对象的初始化过程中可以看出,首先都进行了默认初始化。然后对有显示赋值的变量才再进行显示初始化。

但对final修饰的类属性和对象属性而言,如果不显示初始化,其默认将是进行默认初始化后的值,这与final本身出发点矛盾,

因此,Java语法规定:
final修饰的类属性和变量属性必须要进行显示初始化赋值。

另外,无论对于基本数据类型还是引用数据类型,final修饰的变量都是首次显示初始化后值都不能修改。对于基本数据类型,很好理解。

对于引用数据类型,引用变量指向的是实际的对象,但其存储的是所指向对象的地址,因此,其值不能修改并不意味着其所指向的对象不能修改。

实例变量往往有三次赋值机会,
分配空间,初始化属性,调用构造方法

2, final 修饰方法:

final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。

此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,

将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,

而是在子类中重新定义了新的方法。

/*
	final修饰方法
*/
class Super{
	//加上final之后就不能再覆盖了
	//final修饰方法时表示该方法不能被子类覆盖
	public final void method(){

	}
}
class Sub extends Super{
	//方法的覆盖
	/*public final void method(){
		
	}*/
}

3,final修饰类

final修饰类即表示此类已经是“最后的、最终的”含义。因此,用final修饰的类不能被继承,即不能拥有自己的子类。

如果视图对一个已经用final修饰的类进行继承,在编译期间或发生错误。

/final类不能被子类继承,final让此类断子绝孙,所以当然不能被子类覆盖
final class Super{
	//加上final之后就不能再覆盖了
	//final修饰方法时表示该方法不能被子类覆盖
	public final void method(){

	}
}
/*class Sub extends Super{
	//方法的覆盖
	/*public final void method(){
		
	}
}*/

4,final修饰的局部变量

  • 基本数据类型:final修饰的基本数据类型的值不能够被修改的;
  • 引用数据类型:final修饰的引用类型地址不能够发生变化的,但是引用类型的地址里面的值是可以发生变化的。
    在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马不常有

整理不易,点滴助力就是不竭动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值