【java】final关键字详解

server/2024/10/19 7:34:34/

 🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~

💟 作    者:码喽的自我修养🥰
📝 专    栏:Java入门到实战 🎉

🌈 创作不易,如果能帮助到带大家,欢迎 收藏+关注  💕

​ 🌈🌈文章目录  

final的意义

final的使用

1. final修饰类

2. final修饰方法

3. final修饰变量

练习

final的意义

final:最终的,不可更改的

final的使用

1. final修饰类

表示这个类不能被继承,没有子类。提高安全性,提高程序的可读性。

例如:String类、System类、StringBuffer类

java">final class Eunuch{//太监类}
class Son extends Eunuch{//错误}

2. final修饰方法

表示这个方法不能被子类重写。

例如:Object类中的getClass()

java">class Father{public final void method(){System.out.println("father");}
}
class Son extends Father{public void method(){//错误System.out.println("son");}
}

3. final修饰变量

final修饰某个变量(成员变量或局部变量),一旦赋值,它的值就不能被修改,即常量,常量名建议使用大写字母。

例如:final double MY_PI = 3.14;

如果某个成员变量用final修饰后,没有set方法,并且必须初始化(可以显式赋值、或在初始化块赋值、实例变量还可以在构造器中赋值)

修饰成员变量

java">public final class Test {public static int totalNumber = 5;public final int ID;public Test() {ID = ++totalNumber; // 可在构造器中给final修饰的“变量”赋值}public static void main(String[] args) {Test t = new Test();System.out.println(t.ID);}
}

修饰局部变量:

java">public class TestFinal {public static void main(String[] args){final int MIN_SCORE ;MIN_SCORE = 0;final int MAX_SCORE = 100;MAX_SCORE = 200; //非法}
}

错误演示:

java">class A {private final String INFO = "atguigu";  //声明常量public void print() {//The final field A.INFO cannot be  assigned//INFO = "尚硅谷"; }
}

练习

题1:排错

java">public class Something {public int addOne(final int x) {return ++x;     //错误写法// return x + 1;//正确写法}
}

题2:排错

java">public class Something {public static void main(String[] args) {Other o = new Other();new Something().addOne(o);}public void addOne(final Other o) {// o = new Other(); //错误写法o.i++; //正确写法}
}
class Other {public int i;
}

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家点点收藏+关注 ~💕  

​ 

   更多专栏订阅推荐:

🥕 JavaScript深入研究

👍 前端工程搭建
💕 vue从基础到起飞

✈️ HTML5与CSS3

🖼️ JavaScript基础

⭐️ uniapp与微信小程序

📝 前端工作常见问题与避坑指南

✍️ GIS地图与大数据可视化

📚 常用组件库与实用工具

💡 java入门到实战 


http://www.ppmy.cn/server/129431.html

相关文章

过于可爱!手把手教你用AI绘画工具SD做人气超高的毛绒玩具,SD毛绒玩具制作教程详解!

大家好,我是灵魂画师向阳 最近网上看到一些用 Stable Diffusion 生成的毛绒玩具,非常可爱。我也尝试了一下,效果很不错,还能体验一下自己做周边设计师的快乐。 这种效果做起来其实并不难,基本思路还是 controlnet 控…

面试题之- null和undefined的区别

前言 首先undefined和null都是基本数据类型,这两个基本数据类型分别都只有一个值,就是undefined和null。 undefined代表的含义是未定义,null代表的的含义是空对象,一般变量声明了但是还有没有定义的时候会返回undefined&#xf…

【JAVA开源】基于Vue和SpringBoot的服装生产管理系统

本文项目编号 T 066 ,文末自助获取源码 \color{red}{T066,文末自助获取源码} T066,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

横向移动与痕迹清理

目录 横向移动漏洞利⽤服务利⽤IPC横向计划任务横向计划任务横向WMI横向SMB横向DCOM横向WinRM横向PSEXEC横向其他⽅式横向 软件部署利⽤GPO组策略横向 密码喷洒密码策略检查喷洒主机喷洒⽤户名喷洒密码喷洒hash喷洒服务 痕迹清除OPSEC清除webshell清除隧道⼯具清除落地样本清除…

【优选算法】(第二十八篇)

目录 K个⼀组翻转链表(hard) 题目解析 讲解算法原理 编写代码 两数之和(easy) 题目解析 讲解算法原理 编写代码 K个⼀组翻转链表(hard) 题目解析 1.题目链接:. - 力扣(Leet…

【09】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Class类基础全解(属性、方法、继承复用、判断)

序言: 本文详细讲解了关于我们在程序设计中所用到的class类的各种参数及语法。 笔者也是跟着B站黑马的课程一步步学习,学习的过程中添加部分自己的想法整理为笔记分享出来,如有代码错误或笔误,欢迎指正。 B站黑马的课程链接&am…

AI绘画:人工智能颠覆艺术创作的新时代

*AI绘画的震撼与魅力* 你是否曾幻想过,手握画笔便能创造出前所未有的艺术作品?当我们谈及艺术,总会联想到那份独特的创意和灵感。而如今,随着人工智能的迅猛发展,AI绘画正以其独特的方式,颠覆着传统的艺术…

Type A和Type B ,Type C的区别

USB接口的Type A、Type B、和Type C之间的区别主要体现在物理形状、用途以及功能等方面。每种类型的USB接口都有特定的设计用途,以下是它们的主要区别: 1. 物理形状 USB Type A: Type A是最常见的USB接口形状,通常用于主机设备&a…