Java之final修饰符

本文详细介绍了final关键字在Java中的使用,包括final如何修饰变量、方法和类,并解释了这些修饰符的作用及注意事项。

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

final修饰符

final关键字可用于修饰变量,方法和类,用于表示它修饰的变量,方法和类不可改变。

  • final修饰变量

final修饰变量时,表示该变量一旦获得初始值就不可以被改变。final即可以修饰成员变量,也可以修饰局部变量。

  1. final成员变量必须由程序员显式指定初始值。因为final修饰成员变量,一旦有了初始值,就不能被重新赋值,而在没有指定初始值时,也没有在初始化,构造器中为成员变量指定初始值,那么这些成员变量的值将是系统默认分配的,此时,这些成员变量也就失去了意义。
  2. 实例变量不能在静态初始化块中指定初始值。因为静态初始化块是静态成员,不可访问实例变量(非静态成员)。 
  • final修饰方法
  1.  final修饰的方法不可以被重写,例如在Object类中的getClass()方法,若重写final方法,会出现编译错误
public class FinalTest{
	public final void test(){
		
	}
}
class Sub extends FinalTest{
	//重写final方法,出现编译错误
	public void test(){
		
	}
}

   2. 对于一个private方法,因为其只可以对当前类可见,子类无法访问该方法,子类也就无法重写该方法。但是,如果子类中定义一个与父类private方法有相同方法名,相同参数列表,相同返回类型的方法,不是方法重写,只是重新定义了一个新方法,不会出现编译错误,(有final修饰的private方法,导致子类不能直接继承此方法,此时,在子类中定义相同方法名,相同参数列表的方法,不会与final修饰方法产生矛盾,相当于一个新方法)例:

public class PrivateFinalTest{
	private final void test(){
		
	}
}
class Sub extends PrivateFinalTest{
	//重写final方法,出现编译错误
	public void test(){
		
	}
}
  • final修饰类

 final修饰的类不能被继承(不能有子类),例如:java.lang.Math类就是一个final类,不可以有子类。

public final class FinalClass{
	
}
//以下类定义,出现编译错误
class Sub extends FinalClass{
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值