当前位置: 首页 > 科技观察

一篇文章带你了解Final关键字的相关知识

时间:2023-03-13 12:46:00 科技观察

一、final关键字1、如果一个类被final修饰符修饰,则表示该类不能有子类,这样的类称为final类.final关键字可以修饰类、变量和方法。2、final关键字修饰类、修饰方法、修饰变量的特点final关键字修饰类:不能被其他类继承;final关键字修饰的方法:方法不能被重写,即方法不能被继承的子类Write;final关键字修饰变量:成员变量和局部变量都是常量,只赋值一次。二、final关键字修饰类1.当类被final关键字修饰时,表示该类不能被继承。2.final关键字修饰类示例//定义Fruit类finalclassFruit{//info()方法publicvoidinfo(){System.out.print("fruit");}}//定义Cherry继承Fruit类classCherryextendsFruit{//infor()methodpublicvoidinfo(){System.out.print("cherry");}}publicclassp24{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubCherryc=newCherry();//实例化子类Cherry对象c.info();//调用info()方法}}输出结果为:从上面的编译结果可以看出是错误的,因为final关键字修饰了Fruit类,当Cherry类继承了Fruitclass,编译出现“Unresolvedcompilationproblem:ThetypeCherrycannotsubclassthefinalclassFruit”说明Cherry类型不能子类final类Fruit,所以final修饰的类不能被其他类继承。三、final关键字修饰方法1、final关键字修饰方法表示本类的子类不能重写该方法。2.final关键字修饰方法案例//定义Fruit类classFruit{//使用final修饰info()方法publicfinalvoidinfo(){System.out.print("fruit");}}//定义Cherry继承Fruit类classCherryextendsFruit{//重写Fruit类的info()方法publicvoidinfo(){System.out.print("cherry");}}publicclassp24{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubCherryc=newCherry();//实例化子类Cherry对象c.info();//调用info()方法}}3、运行结果为:以上代码编译结果错误,因为Cherry类重写了info()Fruit类的方法,我们可以看到final关键字修饰了Fruit类的info()方法,所以final关键字修饰的方法是final的,子类不能重写这个方法。如果父类定义的一个方法不希望子类重写它,可以使用这个final关键字来修饰该方法。四、final关键字修饰变量1.当final关键字修饰变量时,变量就变成了常量,即一旦赋值,就不能再赋值。2、final关键字修饰成员变量,需要在定义显示中指定初值。3、final关键字修饰局部变量,可以在定义时指定初值,也可以不指定初值。4.final关键字修饰局部变量示例finalinti=3;//先赋值i=6;//重新赋值会导致上面代码编译错误,因为是重新赋值给i,使用final关键字修饰int类型的变量i,final关键字修饰的变量是常量,只能赋值一次,不能再赋值。i是一个基本数据类型,i的内容是一个值。5.final关键字修饰成员变量示例//定义Fruit类classFruit{finalStringname;//final关键字修饰name属性doubleweight=66;//水果重量weight属性//info()方法打印水果信息publicfinalvoidinfo(){System.out.print("Iama"+name+"weight:"+weight+"g!");}}publicclassp24{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubFruitf=newFruit();//实例化水果objectf.info();//调用info()方法}}运行结果为:从上面的运行结果可以看出编译是错误的,因为定义了final关键字修饰的成员变量在给它一个初始值。五、总结本文主要介绍final关键字修饰类,final关键字修饰方法,final关键字修饰变量。final关键字修饰该类,表明它不能被其他类继承。final关键字修饰的方法表示不能覆盖该类的子类的方法。当用final关键字修饰变量时,成员变量和局部变量都是常量,只赋值一次。修饰类、方法、变量的final关键字也有助于通过例子理解。本文转载自微信公众号《Java进阶学习交流》,可通过以下二维码关注。转载本文请联系Java进阶学习交流公众号。