【软件工程师从0到1】- 封装 (知识汇总)

前言

介绍:大家好啊,我是hitzaki辰。

社区:(完全免费、欢迎加入)日常打卡、学习交流、资源共享的知识星球。

自媒体:我会在b站/抖音更新视频讲解 或 一些纯技术外的分享,账号同名:hitzaki辰。

正文开始,抓紧上车!

8f4dc768ffa445d78de7eb9469c55c3d.png


一 - 封装的目的

1.隐藏类的实现细节

2.让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对实例变量的不合理使用

3.可进行数据检查,从而有利于保证对象信息的完整性

4.便于修改提高代码的可维护性。

二 - 权限修饰符

public(公有的) > protected(受保护的) > (default)(缺省的) > private(私有的)

(default并不是关键字 default,而是根本不写)

1 - private

  1.作用域:  只在该类的内部可见,出了该类不可见,无法使用。(子类也无法访问)

  2.修饰:

  private不能修饰外部类,可以修饰内部类。

  被private修饰的成员变量或成员方法,不能被类的调用者使用。

  阿里编程规约:类中,无特殊说明,成员变量全用private封装。

  修饰成员变量实现私有化,再使用设置器setter、访问器getter来访问。

  优点:提高代码复用, 提高程序的安全性。

  (方法,类,属性的私有化... 都是封装的体现)

2 - default

作用域:只有同一个包内才能访问。(同一个直接包,子包不算)

3 - protected

作用域:同一个包内 或 子类

应用:设计模式中的模板方法

  使用它修饰多个行为方法:protected 返回 行为n(){}

  最终public action方法按顺序调用所有行为方法。

  子类可以对各个行为方法进行重写,以此改变action的行为,并且这些单独的行为方法还不会对外暴露。

4 - public

作用域:全部

三 - java的"包"

java的包是用来组织文件的一种虚拟文件系统,它是跨平台的,与操作系统无关。

 

因为不同的人会以不同的目的定义相同的类名或接口名,Java解决此问题的主要方法是包,Java中组织类和接口的方式也是包。

1)把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

2)包如同文件夹一样,文件放在文件夹 ,而类和接口放在包下,包和文件夹一样,都是层次结构。

3)包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

4)以 . 分隔表层次结构,比如java.lang.String,java为上层包名,lang为下层包名,     {带完整包名的类称为完全限定名。}

    (Java API 中所有类、接口都位于包java、javax下, java是标准包、 javax是扩展包)

1 - 声明程序所在包

1)在外部类的首部 (前面不能有除注释外的其他语句), 必须编写类所属哪个包, 格式: package 包名;

2)包名的前缀通常由多个单词组成, 所有单词的字母小写, 单词与单词之间使用.隔开 ,

3)一般命名为“域名.项目名.模块名…”。  (因为Java规范要求包命名的唯一性,因此常使用域名命名,这样不会冲突)

比如org.xuanchen.wschool.service ,这是这个模块所有代码都有的包前缀,它一定是唯一的,其次再根据业务细分出子包,如controller、service。

2 - 通过包使用类

1)通过完全限定名使用

2)通过完全限定名导入后 再使用, import 完全限定名;

3)import java.util.*;     将导入这个包下的所有直接类。 (不包含子包下的类)   (不可以import java.*.*; )

4)静态导入: 在JDK 1.5之后引入的新特性,可直接将类的公开静态方法和成员导入到自己这里,此后直接根据方法名使用。

如 import java.util.Arrays.*;            此后可以直接sort(arr);

3 - jar包

打包的一般都是编译后的代码, 将1到多个编译后的文件打包为1个文件,方便其他程序调用。

Java的打包命令为jar,打包后的文件拓展名为jar,称为jar包。

 

使用下列方式打包:

1)先找到编译后的文件 .class 的根目录

2)在cmd运行命令: jar -cvf <包名>.jar <最上层包名>

 

1)jar包其实就是一个压缩文件,可以使用解压缩的工具打开。

2)Java类库、第三方类库 都是以jar包的形式提供,使用时将其jar包加入类路径即可。

 

 

结尾

感谢你看到这里,如果感觉内容不错的话请点赞支持一下!

如果小伙伴对我的讲解有疑问,欢迎评论区讨论。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥等考C++组别八级005

第一部分:选择题 1、C++ L8 (15分) 以下关于break的说法正确的是( )。 A. 只有循环结构里面才可以使用break语句。 B. 程序运行到break语句的时候会暂停,直到用户按下任意键才会继续执行。 C. 嵌套循环的内层循环里面遇到break的时候,整个嵌套循环结构会立即停止,…

Jenkins扩展篇-流水线脚本语法

JenkinsFile可以通过两种语法来声明流水线结构&#xff0c;一种是声明式语法&#xff0c;另一种是脚本式语法。 脚本式语法以Groovy语言为基础&#xff0c;语法结构同Groovy相同。 由于Groovy学习不适合所有初学者&#xff0c;所以Jenkins团队为编写Jenkins流水线提供一种更简…

kubernetes学习-概念5

服务&#xff08;Service&#xff09; Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。 Kubernetes 中 Service 的一个关键目标是让你无需修改现有应用以使用某种不熟悉的服务发现机制。 你可以在 Pod 集合中运行代码&#xff0c;无…

nginx使用详解:转发规则、负载均衡、server_name

文章目录 一、nginx常用的转发规则location 指令说明location转发使用 二、upstream负载均衡使用三、server_name使用四、其他常用配置限制请求类型处理静态资源目录遍历问题限制客户端使用的ip或者域名 五、需要注意的地方location /api1 探讨location ~ /api1 探讨&#xff0…

DataFunSummit:2023年OLAP引擎架构峰会-核心PPT资料下载

一、峰会简介 OLAP技术是当前大数据领域的热门方向&#xff0c;该领域在各个行业都有广泛的使用场景&#xff0c;对OLAP引擎的功能有丰富多样的需求。同时&#xff0c;在性能、稳定性和成本方面&#xff0c;也有诸多挑战。目前&#xff0c;OLAP技术没有形成统一的事实标准&…

redis性能管理

redis的数据库是存放在内存当中&#xff0c;所以对内存的监控至关重要 redis内存监控和解析 1.如何查看redis内存使用情况 [rootlocalhost utils]# redis-cli -h 20.0.0.170 -p 6379 20.0.0.170:6379> info memory used_memory:853336 //redis中数据占用的内存 use…

触发设备离线

业务场景 业务开发过程中&#xff0c;我们经常会需要判断远程终端是否在线&#xff0c;当终端离线的时候我们需要发送消息告知相应的系统&#xff0c; 环形队列 1.创建一个index从0到30的环形队列&#xff08;本质是个数组&#xff09; 2.环上每一个slot是一个Set&#xf…

python 执行系统命令

subprocess 模块和 os.system 或 os.popen 等函数相比&#xff0c;功能更为强大和灵活&#xff0c;是 Python 官方推荐的执行系统命令的方法。主要的优势包括&#xff1a; 更强的错误处理&#xff1a;subprocess 模块可以更精细地控制错误输出和错误代码&#xff0c;而 os.syst…

自定义springboot的生命周期函数在项目启动完成后去取配置文件中的值

主要是实现smartLifecycle类 package com.ruoyi.workflow.util;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springfr…

MYSQL索引使用注意事项

索引使用注意事项&#xff1a; 1.索引列运算 不要在索引列上进行运算操作&#xff0c;否则索引将失效&#xff1b; 2.字符串不加引号 字符串类型使用时&#xff0c;不加引号&#xff0c;否则索引将失效&#xff1b; 3.模糊查询 如果仅仅是尾部模糊匹配&#xff0c;索引将不会失…

防火墙暴露端口

如果你想开通防火墙上的端口&#xff0c;具体的操作方式可能会取决于你所使用的操作系统。以下是一些常见操作系统的步骤&#xff1a; 1. Linux&#xff08;例如&#xff0c;Ubuntu 或 CentOS&#xff09;: 使用 ufw&#xff08;适用于 Ubuntu&#xff09;&#xff1a; # 开…

RK平台查看板子上的dts信息

简介 dts文件描述了硬件每个模块的信息&#xff0c;我们嵌入式软件的调试很多时候都是在改dts文件&#xff0c;有时候我们不确定板子上的固件是否已经更新了我们的修改&#xff0c;这时候我们可以直接读取板子上的dts信息&#xff0c;下面来演示一下。 进入uboot命令行模式 …

关于软raid的实现及常见问题

RAID概念 磁盘阵列&#xff08;Redundant Arrays of Independent Disks&#xff0c;RAID&#xff09;&#xff0c;有“独立磁盘构成的具有冗余能力的阵列”之意。 磁盘阵列是由很多价格较便宜的磁盘&#xff0c;以硬件&#xff08;RAID卡&#xff09;或软件&#xff08;MDADM&…

关于用css设置input输入框hover的时候的样式以及当input为disabled的时候,不要让hover样式生效

效果如果&#xff1a; 编辑状态下的时候&#xff1a; 只读状态下的时候&#xff1a; 代码如图&#xff1a; <input type"text" name"dataForm.exportCode" id"exportCodeItem" required :disabled"editDisabled" />input:not(…

【前端学java】语法练习-工具类的封装(13)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…

java.net.UnknownHostException: eureka

java.net.UnknownHostException: eureka 哦。HOST漏了 #linux /etc/hosts #windows C:\Windows\System32\drivers\etc\hosts 127.0.0.1 eureka7000 127.0.0.1 eureka7001 127.0.0.1 eureka7002

maven打包可执行jar含依赖lib

修改pom.xml <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- jdk8可用&#xff0c;其他jdk版本可能需改插件版本 --><version>2.3.7.RE…

sql调优

慢查询 SQL 治理方案 一、SQL 性能下降的原因 在对 SQL 进行分析之前&#xff0c;需要明确可能导致 SQL 执行性能下降的原因进行分析&#xff0c;执行性能下降可以体现在很多方面&#xff1a; 查询语句写的烂索引没加好表数据过大数据库连接数不够查询的数据量过大被其他慢s…

MyBatisPlus代码生成

基础依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…