当前位置: 首页 > article >正文

Java | final关键字快速上手【通俗易懂,看这篇就够了】

在这里插入图片描述

final关键字生动介绍

  • 一、final关键字介绍及引入
  • 二、final关键字修饰类
    • 1、简单案例分析
    • 2、JDK中的final修饰类【String、System、StringBuilder】
  • 三、final关键字修饰方法
  • 四、final关键字修饰变量
    • 1、局部变量
    • 2、成员变量
  • 五、final关键字注意事项
  • 六、总结与回顾

一、final关键字介绍及引入

首先说明一下final关键字的基本用法,final翻译过来就是最终的意思,也就是处于最后的位置,是不可被修改的,final关键字主要用于修饰类、方法和变量

二、final关键字修饰类

final修饰类表明该类不能被继承

1、简单案例分析

  • 这里先是定义了一个Animal动物类,并且在其类前加上了final关键字
final class Animal{}
  • 然后执行了一步这样的操作,用一个Wolf🐺类去继承这个动物类,但是系统却报出了错误
class Wolf extends Animal{}     //不能继承

在这里插入图片描述

  • 从中可以看出,对于final关键字修饰的类,该类是不可以被继承的,这个我们前面讲static关键字讲到的一个知识点【工具类】可以联系起来,我们知道,工具类是不可以被继承的,只是将一个功能封装成为一个类,然后外界可以通过这个类去很快地实现一些功能,从而提高开发的效率,所以对于工具类,我们就可以给其加上final关键字

2、JDK中的final修饰类【String、System、StringBuilder】

对于JDK【Java开发工具包】中也是有许多我们常见的用final修饰的类,只是我们没有认真地去阅读API文档,所以不太了解

  • 首先第一个就是String类

在这里插入图片描述

  • 然后是System类

在这里插入图片描述

  • 最后再来一个StringBuilder类

在这里插入图片描述

其实在JDK中还要很多我们熟知的类都是用final关键字修饰,表明这些类都是不可以被继承的,是一种Java官方提供给我们的工具类,我们可以直接拿来使用,调用其中的功能即可😀

三、final关键字修饰方法

final修饰的方法称为密封方法。该方法不能被重写❌

  • 首先我们定义一个People人类
class People{         public final void eat(){	//不能重写System.out.println("人都要吃东西");}
}
  • 这里要注意,我并没有拿final关键字去修饰这个类,因此是可以被继承的,但是我们这个类中的eat()方法前加了一个final关键字,接着就定义一个Teacher老师类去继承它
class Student extends People{@Overridepublic void eat() {System.out.println("学生吃很多");}
}
  • 在继承子类中,我去重写了这个方法,然后就报出了这样的错误👇

在这里插入图片描述

  • 这就可以看出,被final修饰的方法是不可以被继承的子类所重写的,通俗一点讲就是【子类要老老实实地继承父类的方法,不可以做任何篡改】这点也是要记住哦👈

四、final关键字修饰变量

final修饰成员变量表示该变量在进行声明时只能进行一次赋值,不可在后面修改其值(有且仅能被赋值一次

  • 我们知道,变量分为局部变量和成员变量,而成员变量又分为静态成员变量和实例成员变量,接下来让我们一起来看看吧🏃

1、局部变量

  • 对于局部变量来讲,可以是过程中定义的,也可以是形参变量
//1.局部变量
final double pi = 3.14;
//pi = 9.1;     不能第二次赋值

在这里插入图片描述

  • 从代码和运行结果来看,应该是一目了然,不可以做二次赋值
public static void buy(final double discount){//discount = 9.9;   不能第二次赋值
}
buy(7.9);       //接值的时候为第一次赋值
  • 这里的方法形参也是一样,如果定义成用final关键字修饰,那一定是不可以在方法体中对其进行赋值的,因为你在调用这个方法的时候系统会让你一定要传入参数

2、成员变量

接下来我们来看看final修饰的成员变量

public class Test2 {//2.成员变量 - 静态成员变量(常量)public static final String SchoolName = "清华大学";//2.成员变量 - 实例成员变量(几乎不用)private final String name = "丘成桐";//SchoolName = "ddd";   无法赋值Test2 t2 = new Test2();System.out.println(t2.name);//t2.name = "丘比特";   无法赋值
}
  • 好,我们先来看一下这个,在这个Test2类中,声明了一个静态成员变量,一个实例成员变量,都用final关键字对其进行了一个修饰,而且都有了一个初始值
  • 所以在下面的代码中,无法对则会两个成员变量再次进行赋值,否则就会出现和上面那些报错一样的情况,算了,还是给出来看一下吧😀

在这里插入图片描述

五、final关键字注意事项

  • 这里有些小伙伴可能就有疑惑了,这个final关键字难道真的是一毛不拔吗,无论是修饰类、方法还是变量,完全就不能修改里面的任何东西吗?

那倒也不是☝️

  • final修饰的变量是基本类型:那么变量存储的数据值不能发生改变😁
  • final修饰的变量是引用类型,其地址值不能改变,但指向对象的内容可以改变😍
class Teacher{private String hoppy;public Teacher(String hoppy) {this.hoppy = hoppy;}public String getHoppy() {return hoppy;}public void setHoppy(String hoppy) {this.hoppy = hoppy;}
}
final Teacher t = new Teacher("吃饭,睡觉,打豆豆");
System.out.println(t.getHoppy());
//t = null;           //二次赋值
t.setHoppy("游泳");
System.out.println(t.getHoppy());
  • 从上述代码可以看出,我通过final修饰的Teacher类型去new了一个对象,然后为其兴趣爱好赋了一个初值,那这个对象的地址能不能被修改呢?答案是【不可以】,这就算是一个二次赋值了,但是这个对象的内容我们是可以修改的,只需要调用这个类中的SetHoppy()方法就可以了,可以看出系统也是没有给我们报错❌

六、总结与回顾

  • 在本文中,我们讲解了Java中的final关键字,知道了用final关键字修饰的类、方法和变量都是很严谨,不能做修改的,但是对于final修饰的引用类型变量,虽然其地址值不能改变,但指向对象的内容可以改变

好了,这就是本文所要介绍的所有内容,感谢您的观看,关注我,带你玩转Java关键字

在这里插入图片描述

http://www.lryc.cn/news/2417667.html

相关文章:

  • UUID介绍与生成方法
  • fps游戏战斗相关漫谈(五)
  • 安卓工程师必须了解的Gradle知识
  • ASCII码对照表(包括十六进制、十进制和字符)
  • 如何使用Chat GPT
  • 适合小白入门!Sqlite数据库学习(附操作过程截图)
  • 大白话讲vuex
  • 随记——ELK部署
  • Linux whois命令教程:查询域名所有者信息(附案例详解和注意事项)
  • SqlServer数据库安装及使用(第一篇)
  • Arduino入门
  • (1-4)TensorFlow深度学习基础:TensorFlow开发流程
  • 【实践篇】手把手教你落地DDD
  • Swiper的安装及使用
  • JS中的Promise(秒懂如何使用promise进行异步操作)
  • SSH远程链接
  • JavaScript的简介及基本语法
  • jQuery(一)jQuery基本语法
  • Spark的概念、特点、应用场景
  • RabbitMQ介绍及部署(超详细讲解)
  • SQL Server详细使用教程:安装步骤、必备知识点与常见问题解析
  • 手把手教你安装CUDA(一看就会)
  • uni-app小程序开发实战 | (从零设计一款个人中心页面,最详细)
  • 狗都不学系列——虚拟机的基本使用
  • Transformer模型初解(非常详细)零基础入门到精通,收藏这一篇就够了
  • Canvas基础: fillStyle和strokeStyle示例
  • 密码学--md5加密
  • FileZilla工具的使用以及主动模式与被动模式
  • 快速了解Spring(超详细+干货满满)
  • 【TS】2134- 重新学习 TypeScript 类型系统