一篇文章带你弄懂final关键字的相关知识

共 2926字,需浏览 6分钟

 ·

2021-01-07 22:07

点击上方“Java进阶学习交流”,进行关注

后台回复“Java”即可获赠Java学习资料

昔日长城战,咸言意气高。

    前面几篇文章用Java带大家一起了解Java的部分基础知识,感兴趣的小伙伴们可以去学习下了,一篇文章带你了解Java类的设计和封装及类成员的访问控制一篇文章带你了解this关键字和单例模式Java基础入门篇——面向对象和类的定义,这篇文章带大家一起学习下final关键字。


一、final关键字

1.如果一个类被final修饰符所修饰,表示该类不可能有子类,这样的类就叫做最终类。final关键字可以修饰类、变量、方法。

2.final关键字修饰类、修饰方法、修饰变量的特点

final关键字修饰类:不能被别的类继承;

final关键字修饰方法:方法也不能被覆盖,也就是方法不能被继承的子类重写;

final关键字修饰变量:成员变量、局部变量是常量,仅一次赋值。


二、final关键字修饰类

1.当类被final关键字修饰,表示这个类是不能被继承的。

2.final关键字修饰类例子

//定义Fruit类final class Fruit{//info()方法public void info(){        System.out.print("fruit");  }}//定义Cherry继承Fruit类class Cherry extends Fruit{//infor()方法public void info(){        System.out.print("cherry");  }}public class p24 {public static void main(String[] args) {        // TODO Auto-generated method stub        Cherry c=new Cherry();//实例化子类Cherry对象        c.info();//调用info()方法  }}

输出的结果是:

从上面的编译结果可以看出是错误的,因为final关键字修饰Fruit类,当Cherry类继承Fruit类时,编译出现了“Unresolved compilation problem: The type Cherry cannot subclass the final class Fruit”表示Cherry类型不能将final类水果子类化,所以final修饰的类是不能被别的类继承的。


三、final关键字修饰方法

1.final关键字修饰方法,表示该类的子类的不可以重写方法。

2.final关键字修饰方法案例

//定义Fruit类class Fruit{//使用final修饰info()方法public final void info(){        System.out.print("fruit");  }}//定义Cherry继承Fruit类class Cherry extends Fruit{//重写Fruit类的info()方法public void info(){        System.out.print("cherry");  }}
public class p24 {public static void main(String[] args) { // TODO Auto-generated method stub Cherry c=new Cherry();//实例化子类Cherry对象 c.info();//调用info()方法 }}

3.运行的结果是:

从上面的代码中编译结果是错误的,因为Cherry类重写Fruit类的info()方法,我们可以看到final关键字修饰Fruit类的info()方法,所以final关键字修饰的方法是最终的,子类是不能对这个方法进行重写的。如果父类定义的某个方法,不想让子类重写,就可以使用这个final关键字修饰方法。


四、final关键字修饰变量

1.final关键字修饰变量时,变量就变成常量,也就是一旦被赋值,就不能重新赋值。

2.final关键字修饰成员变量,需要在定义显示指定初始值。

3.final关键字修饰局部变量,可以在定义时指定初始值,也可以不指定初始值。

4.final关键字修饰局部变量的例子

final int i = 3;//第一次赋值i= 6;//再次赋值

上面代码中会出现编译错误,因为是重新给i赋值,用final关键字修饰int类型变量i,被final关键字修饰的变量为常量,只能被赋值一次,不可以被重新赋值,i是基本数据类型,i的内容是值。

5.final关键字修饰成员变量例子

//定义Fruit类class Fruit{  final String name;//final关键字修饰name属性  double weight=66;//水果的重量weight属性  //info()方法打印水果信息  public final void info(){    System.out.print("我是一个"+name+"重量为:"+weight+"g!");  }}
public class p24 { public static void main(String[] args) { // TODO Auto-generated method stub Fruit f=new Fruit();//实例化Fruit对象 f.info();//调用info()方法 }}

运行的结果是:

从上面的运行结果我们可以看到编译是错误的,因为final关键字修饰的成员变量,在定义的时要给它一个初始值。


五、总结

本文主要介绍了final关键字修饰类、final关键字修饰方法、final关键字修饰变量。

final关键字修饰类说明了是不能被别的类继承的。final关键字修饰方法表示该类的子类的方法是不可以被重写的。

final关键字修饰变量时,成员变量、局部变量是常量,仅一次赋值。final关键字修饰类、方法、变量也通过案例帮助理解。

希望大家通过本文的学习,对你有所帮助!

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Java学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报