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

Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举

文章目录

  • 一、权限修饰符
  • 二、final 关键字
    • 2.1 final 作用
    • 2.2 final 修饰变量举例
    • 2.3 常量
  • 三、枚举
    • 3.1 枚举的格式
    • 3.2 枚举的特征
    • 3.3 枚举的应用


一、权限修饰符

权限修饰符 用于约束成员变量、构造器、方法等的访问范围。

权限修饰符: 有四种作用范围由小到大 (private -> 缺省 ->protected - > public)

在这里插入图片描述
注: 不同包下的子类指的是,不同包下的子类对象能访问,当前类创建父类对象访问不了。

// 模拟不同包下的子类
public class Zi extends Fu {public static void main(String[] args) {Fu fu = new Fu();// fu.privateMethod(); 访问不了// fu.method(); 访问不了// fu.protectedMethod(); 访问不了fu.publicMethod();Zi zi = new Zi();zi.protectedMethod(); // 可以访问 protected}
}

定义成员变量、构造器、方法等一般需满足如下要求:

① 成员变量一般私有。
② 方法一般公开。
③ 如果该成员只希望本类访问,使用 private 修饰。
④ 如果该成员只希望本类,同一个包下的其他类和子类访问,使用 protected 修饰。


二、final 关键字

2.1 final 作用

final 关键字是最终的意思,可以修饰类、方法与变量。

  • 修饰类: 类不能被继承。工具类可以用 final 修饰。
  • 修饰方法: 方法不能被重写。 模板方法可以用 final。
  • 修饰变量: 有且仅能被赋值一次。

2.2 final 修饰变量举例

final 修饰 基本数据类型 的变量,其存储的数据不能改变
final 修饰 引用类型 的变量,其存储的地址不能改变,但是指向的对象内容可以改变

举例:final 修饰变量

public class Test {// 修饰静态成员变量( public static final 修饰的也称为常量,必须一次赋完值 )public static final String name = "idea"; // 引用类型// 修饰实例成员变量( 必须一次赋完值,几乎不用 )public final String novelName = "孙悟空";public static void main(String[] args) {// final 修饰变量,总规则:变量有且仅能赋值一次// 变量有两种:局部变量;成员变量(实例成员变量、静态成员变量)// 局部变量final double rate = 3.14; // 基本数据类型// rate = 4.23; 报错,第二次赋值// 成员变量// name = "dev"; // 报错,第二次赋值// new Test().novelName = "唐僧"; // 报错,第二次赋值}
}

new Test().novelName = “唐僧”; 报错是由于引用地址发生了变化,内存原理是在堆内存的常量池中存储了一个“唐僧”的变量,并将引用地址赋给 novelName。

参考:Java 基础入门篇(六)—— String 类详解

举例:final 修饰引用类型的变量

class Teacher{private String hobby;public Teacher(String s) {hobby = s;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}
}public class Test {public static void main(String[] args) {// 注意: final修饰引用类型的变量,其地址值不能改变,但是指向的对象的内容可以改变的。final Teacher teacher = new Teacher("学习,授课");teacher.setHobby("打篮球");System.out.println(teacher.getHobby()); // 打篮球}
}

没有报错的原因:虽然 teacher 对象内部的引用数据的地址发生了变化,但是 teacher 对象的引用地址没有发生变化。


2.3 常量

常量是 public static final 修饰的成员变量,有且仅能赋值一次。

作用:做系统的配置信息,方便程序维护,提高可读性。
规范:名称全部大写,多个单词用下划线连接
常量会出现宏替换:所以常量名的地方在编译后都是变成真实的数据。

接口中的常量,默认加上 public static final 修饰,不写也有。如我们一般在项目中定义的常量接口:

在这里插入图片描述


三、枚举

枚举是一种特殊类型,其用来做信息的标志和信息的分类。

3.1 枚举的格式

在这里插入图片描述


3.2 枚举的特征

反编译后观察枚举的特征:

使用 javap 命令反编译 class 文件得到如下结果:
在这里插入图片描述

特征如下:

① 枚举类都是继承了枚举类型 java.lang.Enum。
② 枚举都是最终类,不可以被继承。
构造器的构造器都是私有的,枚举对外不能创建对象。(看不到)
④ 枚举类的第一行默认都是罗列枚举对象的名称的。
⑤ 枚举类相当于是多例模式,如上文只有四个对象。


3.3 枚举的应用

应用 1:业务枚举类与业务结果包装类

/*** 业务消息枚举*/
public enum CodeMsg {SUCCESS(200, "操作成功"),ERROR(110, "程序员送外卖去了"),USERNAME_PASSWORD_ERROR(4001001, "用户名或者密码错误!"),USER_LOGIN_NAME_EXIST_ERROR(4001002, "用户登陆名已经存在!"),USER_PHONE_EXIST_ERROR(4001003, "用户手机号已被使用!");public Integer code; // 业务码public String msg; // 业务消息CodeMsg(Integer code, String msg){this.code = code;this.msg = msg;}
}
/*** 业务结果包装类* 前端需要: code msg data 这样的数据格式* 因此后端对数据进行包装*/
@Data
public class Result {private Integer code; //业务码private String msg; // 业务消息private Object data; // 业务数据/*所有的业务分为两种情况:1. 成功:1. 成功了没数据  如:删除2. 成功了有返回数据  如:查询2. 失败:失败时没有数据,返回失败原因*//*** 成功没有数据*/public Result(){this.code = CodeMsg.SUCCESS.code;this.msg = CodeMsg.SUCCESS.msg;}/*** 成功有数据*/public Result(Object data){this();this.data = data;}/*** 失败时没有数据,返回失败原因*/public Result(CodeMsg codeMsg){this.code = codeMsg.code;this.msg = codeMsg.msg;}/*** 兼容异常信息*      因为异常中 code 和 msg* @param businessException*/public Result(BusinessException businessException){this.code = businessException.getCode();this.msg = businessException.getMessage();}
}

应用 2:switch 兼容枚举类

public void showSeason(Season s){switch (s){case SPRING: // 不用写成 s.SPRING, switch 兼容枚举break;case SUMMER:break;case AUTUMN:break;case WINTER:break;default:break;}
}

文章参考:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)

相关文章:

Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举

文章目录 一、权限修饰符二、final 关键字2.1 final 作用2.2 final 修饰变量举例2.3 常量 三、枚举3.1 枚举的格式3.2 枚举的特征3.3 枚举的应用 一、权限修饰符 权限修饰符 用于约束成员变量、构造器、方法等的访问范围。 权限修饰符: 有四种作用范围由小到大 (p…...

Linux命令集(Linux文件管理命令--touch指令篇)

Linux命令集(Linux文件管理命令--touch指令篇) Linux文件管理命令集(touch指令篇)6. touch(touch)1. 创建名为 file1 的空文件2. 创建名为 file1 和名为 file2 的多个文件3. 创建名为 file1 的文件并将访问时间设置为特定日期4. 创…...

软件工程学习教程大纲

软件工程学习教程大纲 第一章:软件工程概述 1.1 软件工程的定义和作用 软件工程的发展历程和趋势 软件工程的应用领域和特点 1.2 软件开发生命周期 软件开发生命周期的定义和阶段 软件开发生命周期的模型和方法 1.3 软件工程方法和工具 软件工程方法和工具…...

使用ChatGPT生成了十种排序算法

前言 当前ChatGPT非常火爆,对于程序员来说,ChatGPT可以帮助编写很多有用的代码。比如:在算法的实现上,就可以替我们省很多事。所以,小试牛刀一下,看看ChatGPT生成了排序算法怎么样? 简介 排序…...

GEE:MODIS计算遥感指数(NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等)

作者:_养乐多_ 本文将介绍如何使用Google Earth Engine(GEE)进行遥感影像分析,具体地,使用MODIS数据集计算和可视化几种植被指数,以评估植被生长的状况,或者作为随机森林分类器训练需要的特征变量。 主要包括,NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等。 NDVI(Normal…...

《*** 法治思想学习纲要》学习辅导

《*** 法治思想学习纲要》学习辅导 总分:100 及格分数:60 考试剩余时间: 1时 59分 35秒 单选题(共7题,每题5分) 1、全面依法治国中的“关键少数”是()。 正确答案:C、领导…...

初识Go语言18-面向对象【面向对象的概念、构造函数、继承与重写 泛型】

文章目录 面向对象面向对象的概念构造函数继承与重写泛型 面向对象 面向对象的概念 洗衣服过程剖析: 给洗衣机里加脏衣服和洗衣粉。启动洗衣机。洗衣机自动注水,然后滚动。脏衣服从黑颜色变成白颜色。洗衣机自动停止。 用面向过程的思想实现代码。 //…...

4.微服务项目实战---Sentinel--服务容错

4.1 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务…...

Postgres SELECT INSERT 流程 ?

SELECT 当执行SELECT查询时,PostgreSQL数据库会按照以下流程进行处理: 首先,查询语句会被发送到服务器。 服务器会接收查询请求,并根据查询条件从表中读取数据。 数据库会将数据存储在磁盘上的数据文件中,然后将其读…...

OpenAI推企业版ChatGPT,英伟达造AI安全卫士

GPT现在已经进入了淘金时代。虽然全球涌现出成千上万的大模型或ChatGPT变种,但一直能挣钱的人往往是卖铲子的人。 这不,围绕暴风眼中的大模型,已经有不少企业,开始研究起了大模型的“铲子”产品,而且开源和付费两不误…...

【原创】运维的终点是开发~chatGPT告诉你真相

文章目录 软件技术岗位鄙视链,你在哪层呢?让chatGPT告诉你运维工作好,还是开发工作好问它几个问题来自你的消息: 一个三年开发成长的案例和薪资来自ChatAI的消息:来自你的消息: 一个三年运维成长的案例和薪资来自ChatAI的消息:来自你的消息: …...

SSH 服务器、NFS 服务器、TFTP 服务器详解及测试

文章目录 前言一、SSH 服务器1、SSH 能做什么?2、安装 SSH 服务器3、测试 SSH 服务4、用 SecureCRT 测试 二、NFS 服务器1、NFS 能做什么?2、安装 NFS 软件包3、添加 NFS 共享目录4、启动 NFS 服务5、测试 NFS 服务器 三、TFTP 服务器1、TFTP 能做什么&a…...

1.3 HBase 基本架构

架构角色: 1)Master 实现类为 HMaster,负责监控集群中所有的 RegionServer 实例。主要作用如下: (1)管理元数据表格 hbase:meta,接收用户对表格创建修改删除的命令并执行 (2&#x…...

微机作业题

答案做的,正确性不保证。 1. 微型计算机的性能主要取决( A )的性能。 A. CPU B. 显示器 C. 硬盘 D. U盘 2. 计算机的工作过程,本质是( A )的过程。 A. 进行科学计算 …...

非极大值抑制详细原理(NMS含代码及详细注释)

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,YOLO,活动领域博主爱笑的男孩。擅长深度学习,YOLO,活动,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typecollect 个…...

女朋友说总是记不住Git命令,怎么办?安排!

如果你也和我女朋友一样总是忘记Git命令,觉得记忆Git命令是很枯燥和麻烦的事情。我写了一个包含了40 条常用Git命令的清单。你一定要收藏起来,当你忘记Git命令的时候,就可以打开来查看啦!!! 1.初始化本地仓…...

【ChatGLM】本地版ChatGPT ?6G显存即可轻松使用 !ChatGLM-6B 清华开源模型本地部署教程

目录 感谢B站秋葉aaaki大佬 前言 部署资源 部署流程 实机演示 ChatGML微调(人格炼成)(个人感觉蛮有趣的地方) 分享有趣の微调人格 实机演示(潘金莲人格) 感谢B站秋葉aaaki大佬 秋葉aaaki的个人空间…...

【MySQL】练习六 关系数据理论及数据库设计

文章目录 主要内容练习题一、选择题二、填空题三、判断题四、简答题主要内容 一个不好的关系模式可能存在的问题;函数依赖及三种函数依赖的定义:完全、部分、传递范式及1NF/2NF/3NF/BCNF的判定模式分解数据库设计的基本步骤概念设计(E-R图)逻辑模型(E-R图转换为逻辑模型的…...

UG NX二次开发(C++)-建模-修改NXObject或者Feature的颜色(一)

文章目录 1、前言2、在UG NX中修改Feature的颜色操作3、采用NXOpen(C)实现3.1 创建修改特征的方法3.2 调用ModifyFeatureColor方法3.3 测试结果 1、前言 在UG NX中,改变NXObject和Feature的操作是不相同的,所以其二次开发的代码也不一样,我们…...

全球天气weather.com的icon汇总表 天气现象代码枚举

全球天气weather.com的icon汇总表 天气现象代码枚举 Icon代码天气情况(列举常见情况,不包含全部)3大暴雨、大暴雨伴有风4大雷雨、强雷雨、雷雨、雷雨伴有风5雨或雪、雨伴有阵雪6雨夹冰粒、雨夹冰粒伴有风7雨夹雪、小雨夹雪、雪伴有冰粒和风、小雨夹雪伴有风、雪伴有冰粒8冻毛雨…...

【Python】【进阶篇】16、settings.py配置文件详解

目录 settings.py配置文件详解1. settings.py文件介绍1) BASE_DIR2) SECRET_KEY3) DEBUG4) ALLOWED_HOSTS5) INSTALLED_APPS6) MIDDLEWARE7) ROOT_URLCONF8) TEMPLATES9) WSGI_APPLICATION10) DATABASES11) AUTH_PASSWORD_VALIDATORS12) LANGUAGE_CODE和TIME_ZONE13) USE_118N和…...

【华为机试】HJ1 字符串最后一个单词的长度

【华为机试】 HJ1 字符串最后一个单词的长度 描述 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾) 输入描述: 输入一行,代表要计算的字符串…...

Spring DI简介及依赖注入方式和依赖注入类型

目录 一、什么是依赖注入 二、依赖注入方式 1. Setter注入 2. 构造方法注入 3. 自动注入 三、依赖注入类型 1. 注入bean类型 2. 注入基本数据类型 3. 注入List集合 4. 注入Set集合 5. 注入Map集合 6. 注入Properties对象 往期专栏&文章相关导读 1. Maven系…...

ES6栈方法和队列方法

在 JavaScript 这门语言中,栈和队列是非常重要的数据结构,它们可以帮助我们更好地组织和管理数据。我们可以使用 ES6 标准中新增的方法来实现栈和队列的操作。这篇文章将介绍 ES6 中数组的栈方法和队列方法。 栈(Stack) 栈是一种后进先出(L…...

EventBus(事件总线)的使用和源码的简单解析

Google Guava EventBus(事件总线)的使用和源码的简单解析 什么是EventBus? 事件总线(EventBus)是一种广泛用于软件架构中的设计模式,用于实现解耦和松散耦合的通信机制。它可以帮助组织和管理应用程序中不同组件之间的通信&…...

《汇编语言》- 读书笔记 - 第2章-寄存器

《汇编语言》- 读书笔记 - 第2章-寄存器 2.0 8086CPU 寄存器段地址:偏移地址 2.1 通用寄存器2.2 字在寄存器中的存储2.3 几条汇编指令表2.1汇编指令举例表2.2 程序段中指令的执行情况之一问题 2.1表2.3 程序段中指令的执行情况之二问题 2.2 检测点 2.12.4 物理地址2.5 16位结构…...

English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三

English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三 主题整体听一遍精听句子 1扩展 way of doing | way to do sth 句子 2扩展 Expression扩展 base 句子 3句子 4扩展 red-hot 句子 5句子 6扩展 fiery 句子 7句子 8句子 9句子 10句子 11扩展 born 句子 12句子 13句子…...

50道web前端工程师面试题及答案解析,你学会了吗

简介:本文包含了50个实用的前端面试题及答案解析,涵盖了HTML、CSS、JavaScript、DOM、Ajax、MVC、模块化、ES6、SPA、Webpack、Babel、Virtual DOM、响应式设计、移动优先设计、响应式图片、CSS 预处理器、后处理器、模块化、布局、盒模型、浮动、定位、…...

【链表OJ题 1】反转链表

目录 题目来源: 代码实现 1、方法一 1.1分析 2、方法二 2.1 分析 题目来源: 力扣 题目描述: 代码实现 1、方法一 struct ListNode* reverseList(struct ListNode* head) {struct ListNode* prev NULL, * cur head;while (cur){st…...

【华为OD机试真题】计算网络信号 (javaC++python)100%通过率 超详细代码注释

计算网络信号 知识点广搜数组 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值,注意:网络信号可以绕过阴隔物array[m][n]的一维数组代表网格地图,array[i][j]=0代表i…...

重庆建筑特种作业查询网/专业网站优化外包

Exchange2013不同于2010的最大之处就在于使用Web管理控制台!在 Exchange 2013 中,原本在 Exchange 2007 和 Exchange 2010 中使用的管理控制台EMC已经不存在了,新的管理控制台是基于Web模式的,它可以在无需安装任何管理工具的电脑中访问和管理…...

巴中城市建设投资有限公司网站/房地产销售技巧和话术

发现问题我使用的Oracle11g,当我敲下如下一段命令后,就让我傻眼了。。alter system set sga_max_size960M scopespfile;shutdown immediatestartup此时的startup报错了,错误为:SQL> startupORA-00844: Parameter not taking ME…...

青岛做网站哪家优化好/seo优化价格

点击上方“程序IT圈”,选择“置顶公众号”每天早晨8点50分,准点开车打卡本文来源于破产女中年,真实故事老公失业第二个月,银行卖我的p2p爆雷了01小城无新事我家在安徽北部的一个县城。年少时想过各种奋斗,却在父母不忍…...

b2b平台的盈利模式/谷歌seo外链平台

本文转载,原文地址: 分享:个人是怎么学习新知识的...

网站建立网络优化/天津百度快照优化公司

Java语言的特点 特点一:面向对象 两个基本概念:类、对象。三大特性:封装、继承、多态。 特点二:健壮性 吸收了C/C语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等)&…...

五河网站建设哪家好/整站排名

什么是TimelineView 更紧凑的TimelineView定义 与样式类似,SwiftUI 团队正在推动我们为新的TimelineView. 从 Xcode 13b3 开始,这会生成弃用警告: TimelineView(EveryMinuteTimelineSchedule()) { context inText(context.date.descriptio…...