面向对象【final关键字】

请添加图片描述

文章目录

  • final 关键字
  • final 修饰类
  • final 修饰方法
  • final 修饰变量
  • 参考链接

final 关键字

在Java编程语言中,final关键字扮演着重要的角色,用于表示“最终的”或“不可更改的”特性。通过final关键字,可以对类、方法和变量进行限制和保护,从而提高代码的安全性和稳定性。

final 修饰类

在Java中,当一个类被final修饰时,它意味着这个类是最终的,不能被其他类继承。这种设计主要用于确保类的完整性和安全性,防止被继承后被篡改或破坏。


final class Eunuch{

}

在上述示例中,Eunuch类被声明为final,因此无法有子类继承它

注意事项:

声明类为final可以提高程序的性能,因为JVM可以对这样的类进行更多的优化。
通常情况下,只有当类的设计确实需要不被继承时才应该使用final关键字。

final 修饰方法

使用final修饰方法时,意味着这个方法不能被子类重写覆盖。这种限制有助于确保方法在整个继承层级中的一致性和稳定性。

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

在上述示例中,Father类中的method方法被声明为final,因此子类Son无法覆盖这个方法。

注意事项:

使用final修饰方法可以在设计框架或API时提供一定的保护机制,确保关键方法的行为不被修改。

如果确实需要在子类中修改方法的行为,就不能使用final修饰该方法。

final 修饰变量

在Java中,final修饰变量后,该变量的值将不可更改,即成为常量。它可以修饰成员变量、局部变量以及方法参数。

• 修饰成员变量

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);
 }
}

在上述示例中,TOTAL_NUMBER被声明为static final,它表示一个常量。而ID则是实例变量,被声明为final后,只能在构造器中进行初始化。

• 修饰局部变量:


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

在上述示例中,MIN_SCORE和MAX_SCORE都是局部变量,并被声明为final。MIN_SCORE在声明后进行赋值,而MAX_SCORE则在声明时即进行了赋值,因此后续无法修改。

注意事项:
使用final修饰变量可以增强代码的可读性和可维护性,因为常量的值一旦确定就不会被修改
常量命名通常采用大写字母,多个单词之间使用下划线分隔

总结

通过使用final关键字,Java程序员可以更好地管理类、方法和变量,提高代码的健壮性和可读性。合理地应用final关键字,可以有效地防止不必要的修改和继承,从而确保程序的稳定性安全性

参考链接

链接: 3cschool

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/459910.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaScript】JavaScript 运算符 ② ( 表达式 与 返回值 | 自增 与 自减运算符 细节 | 前置自增运算符 | 后置自增运算符 )

文章目录 一、JavaScript 运算符1、表达式 与 返回值2、自增 与 自减运算符 细节3、前置自增运算符4、后置自增运算符5、自增 / 自减 运算符 代码示例 一、JavaScript 运算符 1、表达式 与 返回值 " 表达式 " 是 由 数字 , 运算符 , 变量 组成的 " 式子 " …

功能问题:如何用Docker部署一个后端项目?

大家好,我是大澈! 本文约1800字,整篇阅读大约需要3分钟。 关注微信公众号:“程序员大澈”,免费加入问答群,一起交流技术难题与未来! 现在关注公众号,免费送你 ”前后端入行大礼包…

VBA_MF系列技术资料1-400

MF系列VBA技术资料1-400 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧,我参考大量的资料,并结合自己的经验总结了这份MF系列VBA技术综合资料,而且开放源码(MF04除外),其中MF01-0…

*Javaweb -- MyBatis*

一:介绍: 1.MyBatis是一个优秀的 ①持久层 ②框架,用于简化JDBC的开发! ①:JAVAEE有三层的结构:表现层, 业务层, 持久层. 表现层代表的是页面的展示,业务层则指的是对于相关逻辑的处理, 而持久层, 指的则是对于数据进行持久化,保存在数据库当中. 持久层具体的来说就是负责…

maven本地仓库依赖上传到远程仓库

本地仓库上传到远程仓库 批量上传: 批量本地仓库依赖(jar包)上传脚本: #!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itse…

基础算法-分治算法-学习

现象: 基础算法-分治算法-学习 分而治之,将复杂问题分成小问题,小问题直接求解,最后合并得到最终结果, 和递归思想有点相近,也是区分小问题自己解决,所以在分治算法很多以递归的方式实现 每个…

客户案例|100M 768 维向量数据,Zilliz Cloud 稳定支持 Shulex VOC 业务场景

日前,国际化 VOC SaaS 公司数里行间(Shulex)将上亿数据量的核心业务从开源向量数据库 Milvus 迁移至全托管的向量数据库云服务 Zilliz Cloud。 相比于 Milvus,Zilliz Cloud 实现了 Shulex VOC 评论分析洞察报告生成速度 30% 的提升…

遥感深度学习:CNN-LSTM模型用于NDVI的预测(Pytorch代码深度剖析)

代码上传至Github库:https://github.com/ChaoQiezi/CNN-LSTM-model-is-used-to-predict-NDVI 01 前言 这是一次完整的关于时空遥感影像预测相关的深度学习项目,后续有时间更新后续部分。 通过这次项目,你可以了解: pytroch的模…

力扣● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划

● 1143.最长公共子序列 1.dp数组含义。 dp[i][j]:数组1[0,i-1]范围的子数组和数组2[0,j-1]的子数组的公共子序列最长长度。注意这里不需要一定以A[i-1]/B[j-1]结尾,原因在下面有说明。 动态规划求子序列的问题,一般都是dp的下标相对于数组…

YOLOv7-Openvino和ONNXRuntime推理【CPU】

纯检测系列: YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列: YOLOv5/6/7-O…

EtherCAT开源主站 IGH 介绍及主站伺服控制过程

目录 前言 IGH EtherCAT主站介绍 主要特点和功能 使用场景 SOEM 主站介绍 SOEM 的特点和功能 SOEM 的使用场景 IGH 主站 和 SOEM对比 1. 功能和复杂性 2. 资源消耗和移植性 3. 使用场景 EtherCAT 通信原理 EtherCAT主站控制伺服过程 位置规划模式 原点复归模式…

渗透测试实战思路分析

免责声明:文章来源真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人…

Android图片加载-Glide4,Android多进程从头讲到尾

open fun load(context: WeakReference, url: String?, image: ImageView?, transformation: BitmapTransformation) { if (image null) return // 具体图片加载逻辑 } open fun load(holder: Int, context: WeakReference, url: String, image: ImageView?, width: Int, …

Slim-Neck by GSConv

paper:Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles official implementation:https://github.com/alanli1997/slim-neck-by-gsconv 背景 目标检测是计算机视觉中一个重要的下游任务。对于车载…

UE4_AI_行为树_行为树快速入门指南

声明:学习笔记。 在 行为树快速入门指南 中,你将学会如何创建一个敌方AI,该AI看到玩家后会做出反应并展开追逐。当玩家离开视线后,AI将在几秒钟后(这可根据你的需求进行调整)放弃追逐,并在场景中…

git的实际运用

1. SSH配置和Github仓库克隆 注意博主在这里演示的SSH密钥生成方式,下面追加的五行不成功时可手动到.ssh下的config文件中添加即可 $ tail -5 config Host github.comHostName github.comPreferredAuthentications publickeyIdentityFile ~/.ssh/test 演示 2. 关联…

[AIGC] Spring Boot中的切面编程和实例演示

切面编程(Aspect Oriented Programming,AOP)是Spring框架的关键功能之一。通过AOP,我们可以将代码下沉到多个模块中,有助于解决业务逻辑和非业务逻辑耦合的问题。本文将详细介绍Spring Boot中的切面编程,并…

流程控制 JAVA语言基础

任何简单或复杂的算法都可以由三种基本结构组成:顺序结构,选择结构,循环结构。 顺序结构 比较一般的结构,程序从上到下执行。 选择结构 我们从最简单的单路选择开始,符合条件的进入语句序列,不符合条件的…

基于Java公司配件库存管理系统设计与实现【附项目源码】分享

基于Java公司配件库存管理系统设计与实现: 源码地址:https://download.csdn.net/download/weixin_43894652/88842718 基于Java的公司配件库存管理系统设计与实现需求文档 一、项目背景和目标 随着公司业务的不断拓展,配件库存管理逐渐成为…

旭日x3派部署自己训练的模型(安全帽识别、视频流推理、yolov5-6.2)

旭日x3派部署自己训练的模型(安全帽识别、视频流推理、yolov5-6.2)windows,框架pytorch,python3.7 效果模型训练模型转换1、pt模型文件转onnx2、检查onnx模型3、准备校准数据4、onnx转bin 上板视频流推理1、图片推理2、视频流推理…