(基础)java中的final修饰符

本文详细介绍了Java中final关键字的使用场景,包括修饰常量、方法和类,阐述了其在确保代码稳定性和避免意外修改方面的重要性。通过实例演示了final关键字如何在不同上下文中实现对代码的有效保护。

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

final修饰符

final修饰常量

开发中使用final较多的地方---用来修饰常量

当程序中使用到的数据是固定不变的,请使用final对其进行修饰!

常量名使用大写,多个单词间使用下划线分割

	//全局常量
	public static final double PI = 3.1415926;
	
	//局部常量
	final int TIMES = 10;
 
final修饰方法
被final修饰的方法不能被子类覆盖
如,某个类作为父类,其中某个方法中的计算逻辑,调用关系是不能被子类覆盖的。
通过final修饰符来修饰这个方法,子类将无法重写该方法。
确保了父类中方法的永久有效。
示例:
Parent类中的invoke方法非常重要,不能被子类覆盖
 
Parent类
public class Parent {
	
	
	Parent() {
		System.out.println(this);
		invoke();
	}
	
	public void invoke() {
		System.out.println("do something important");
	}
	
}
 
Child类,由于Parent类中的invoke方法没有被final修饰,所以,Child中一旦覆盖掉,将导致Parent中定义的invoke方法失效。
public class Child extends Parent {

	public Child() {
		System.out.println(this);
	}
	
	public void invoke() {
		System.out.println("do nothing!");
	}
	
}
 
测试代码
public class Test {
	public static void main(String[] args) {
		Child child = new Child();
		child.invoke();
	}
	
	//运行结果:父类的invoke方法被子类覆盖了,并没有得到执行
	/*
		Child@1b6b7f83
		do nothing!
		Child@1b6b7f83
		do nothing!
	 * */
}
 
使用final修饰Parent中的invoke方法
public class Parent {
	
	
	Parent() {
		System.out.println(this);
		this.invoke();
	}
	
	final public void invoke() {
		System.out.println("do something important");
	}
	
}
 
 
public class Child extends Parent {

	public Child() {
		System.out.println(this);
	}
	
	//invoke()在父类中被final修饰,子类中只能使用而无法覆盖
	
}
 
public class Test {
	public static void main(String[] args) {
		Child child = new Child();
		child.invoke();
	}
	
	//运行结果:父类的invoke方法被final修饰后,子类将无法对其覆盖
	/*
		Child@1b6b7f83
		do something important
		Child@1b6b7f83
		do something important
	 * */
}
 
 
 
final修饰类
如果该类不允许被其它类继承(继承会破坏封装性),使用final进行修饰;
final public class Parent {
	
	
	Parent() {
		System.out.println(this);
		this.invoke();
	}
	
	final public void invoke() {
		System.out.println("do something important");
	}
	
}
 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值