Java学习笔记003:final关键字

本文深入解析final关键字在Java中的应用,包括修饰变量、方法和类的作用。详细解释了final如何限制数据的修改、防止方法的重写及阻止类的继承,同时探讨了其对程序效率的影响。

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

final 关键字可以修饰 变量 类 和方法

简单来说:
final修饰的数据不可修改,类不可被继承 , 方法不能被重写

详细来说:
final修饰数据

//final
    private final int valueOne = 9;

//static 的 final 
	private static final int VALUE_TWO = 99;

// 如果不是基本类型就不能编译时初始化
	private final int i4 = rand.nextInt(20);

//空final  其实final修饰数据的意思是 只允许赋值一次 
//没赋值的final数据还有一次赋值机会
    private final int i5;

//final参数  参数在方法中是不可变的(只读) 如果参数是引用则引用不可变
//多用于内部类
public void finalArgs( final int i  ){
System.out.println(i);
}

final修饰方法:
final修饰的方法禁止覆盖(重写) 在java se6 之前使用final 方法可以提升运行效率。在新版本中可以不必考虑这点。
private的方法都是不可覆盖的,因为都是隐式的指定为 final 的,但你可以显式的添加final关键字并不会报错。
但值得注意的是,你是可以在子类中看起来覆盖了父类的方法:

public class FinalData {

	private final void finalTest01() {
		
		System.out.println("1");
		
	}

}

class FinalData02 extends FinalData{
	//这并不是覆盖 只是名字相同的两个方法
private final void finalTest01() {
		
		System.out.println("2");
		
	}
	
}

当你把父类的方法声明为private之后,在子类中,父类的方法其实相当于消失了(不存在),这时候在子类中新增加的方法其实就是和父类无关的新方法,即使名字一样,也没有任何关系。
这很容易让人混淆,所以在子类方法中重写方法加上@Override注解可以减少错误发生。

final修饰类
final修饰的类就相当于你把类阉了,类就没办法产生子类了(滑稽)
也就相当于给final类中所有方法都加上了final ,同样的,你手动的加上的方法的final编译器也不会报错,但这是无用的,属于画蛇添足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值