【软件工程师从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包加入类路径即可。

 

 

结尾

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

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

 

 

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

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

相关文章

数据结构与算法实验(黑龙江大学)

实验一 顺序存储的线性表&#xff08;2 学时&#xff09; 一、实验目的 1 、掌握线性表的逻辑结构特征。 2、熟练掌握线性表的顺序存储结构的描述方法。 3 、熟练掌握顺序表上各种基本操作的实现。 二、实验内容 1 、设线性表的数据元素都为整数&#xff0c;存放在顺序表…

infercnv 三回首:深入理解infercnv为何能发nature

大家好&#xff0c;不知你是否还记得&#xff0c;前两次关于infercnv的介绍。请看这里&#xff1a; 肿瘤单细胞转录组拷贝数分析结果解读和应用 单细胞拷贝数变异 infercnv再回首 如果下载了示例数据&#xff0c;并且你已经跑了上述代码&#xff0c;不难得到这张图&#xff1…

基于Java GUI模拟银行自动取款机

一、课题描述 编写一个程序&#xff0c;模拟银行自动取款机的工作流程。主要功能如下所述: 当输入给定的卡号和密码&#xff08;初始卡号为888888和密码为123456)时&#xff0c;系统能登录ATM柜员机系统,用户可以按照以下规则进行: 查询余额:初始余额为50000元 ATM取款:每次…

【LeetCode】每日一题 2023_11_21 美化数组的最少删除数(贪心/模拟)

文章目录 刷题前唠嗑题目&#xff1a;美化数组的最少删除数题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode? 启动&#xff01;&#xff01;&#xff01; 原本今天早上要上体育课&#xff0c;没那么早刷每日一题的&#xff0c;本周是体测周&#xff0c;所以体育课取消了&am…

二百零七、Flume——Flume实时采集5分钟频率的Kafka数据直接写入ODS层表的HDFS文件路径下

一、目的 在离线数仓中&#xff0c;需要用Flume去采集Kafka中的数据&#xff0c;然后写入HDFS中。 由于每种数据类型的频率、数据大小、数据规模不同&#xff0c;因此每种数据的采集需要不同的Flume配置文件。玩了几天Flume&#xff0c;感觉Flume的使用难点就是配置文件 二、…

Lightsail VPS 实例在哪些方面胜过 EC2 实例?

文章作者&#xff1a;Libai 引言 Lightsail VPS 实例和 EC2 实例是云计算领域中两种受欢迎的技术。虽然两者都提供虚拟服务器解决方案&#xff0c;但了解 Lightsail VPS 实例在哪些方面胜过 EC2 实例非常重要。在本文中&#xff0c;我们将探讨这两种技术之间的关键区别&#x…

FastReport在线设计器新版2024.1,新增多元素填充,条码元素拖放~

2024.1 版本中对报表设计器进行了更新&#xff01;我们特别关注内部架构产品的变化&#xff0c;并提高了报告的视觉易用性。我们还添加了新的对象填充和渐变。 FastReport Online Designer下载&#xff08;qun&#xff1a;585577353&#xff09;https://www.evget.com/product/…

【深度学习】python调用超分Real-ESRGAN

Real-ESRGAN是超分自然场景图和动漫图&#xff0c;视频也可以&#xff0c;项目地址&#xff1a;https://github.com/xinntao/Real-ESRGAN/tree/master 安装python包&#xff1a; basicsr>1.4.2 facexlib>0.2.5 gfpgan>1.3.5 numpy opencv-python Pillow torch>1.…

姿态估计 手势动作实时识别项目(基于mediapipe、keras进行实现)

姿态估计 手势动作实时识别项目(基于mediapipe、keras进行实现) 0、功能展示1、项目原理介绍2、数据集采集脚本3、将采集到的动作数据集利用mediapipe库检测手部关键点信息,转换成数据信息保存到本地4、训练一个效果一般的随机森林分类器5、使用Kreas训练一个效果好点的全连…

软件产品生命周期(SDLC)四个阶段

软件产品生命周期&#xff1a;指软件产品研发全部过程、活动和任务的结构框架。 产品的生命周期一般包括四个阶段&#xff1a;引入期、成长期、成熟期和衰退期&#xff0c;在不同的阶段中&#xff0c;市场对产品的反应不同&#xff0c;其销售特点不同&#xff0c;因而产品管理的…

【linux】安装telnet

1 安装telnet-server yum -y install telnet-server 安装telnet yum -y install telnet 启动telnet服务 service xinetd restart 报错了&#xff1a; Redirecting to /bin/systemctl restart xinetd.service Failed to restart xinetd.service: Unit not found. 正在重定…

Dirac‘s BRA and KET notation

from kets to bras expansions the operater matrix elements adjoint of a linear operator Hermitian and Uniraty Operators Hermitian operator defination:

最前端|低代码平台轻松设计可视化图表【内含网站资源】

在前端设计中&#xff0c;我们经常需要使用可视化图表来呈现数据和信息。然而&#xff0c;每次都要自己从头开始设计图表未免太过繁琐。为了解决这个问题&#xff0c;我们调研了low code平台上的可视化图表功能。 本篇文章为大家带来以下问题的解答&#xff1a; &#xff08;1&…

基于SSM的课程辅助教学平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

MKRTOS MCU上的微内核操作系统

MKRTOS 全称是 Micro-Kernel Real-Time Operating System&#xff0c;中文名字是微内核实时操作系统。MKRTOS 是首款在开源的支持MCU的微内核操作系统。未来还将在MCU上支持虚拟化&#xff01;&#xff01;下载地址&#xff1a;https://gitee.com/IsYourGod/mkrtos-realMKRTOS被…

YOLOV5 人员检测项目【学习笔记(十一)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、安装Pytorch 及 YOLO v51.1 安装GPU版 pytorch1.2 安装YOLO v5所需依赖 二、YOLO v5训练自定义数据2.1 标注数据2.1.1 安装labelImg2.1.2 标注 2.2 准备数据集2.2.1 组织目录结构…

全国各区县地区生产总值数据,含shp和xlsx格式!

​根据国家统计局公布的数据&#xff0c;全国各区县地区生产总值数据是衡量一个地区经济发展水平的重要指标。 今天我们来分享全国各区县地区生产总值数据~ 本文提供的数据是shpexcel格式的&#xff0c;已经经过清洗加工&#xff0c;目前为面的几何类型&#xff0c;时间版本为…

2024年最新FLStudio21破解版注册机百度网盘免费下载安装激活教程

高考完啦&#xff0c;你也迎来了人生中最长的暑假&#xff0c;现在你总不能以没时间为借口了&#xff0c;是时候学点属于自己的才艺了。还有3个月&#xff0c;你就会迎来开学迎新晚会这个校园中最受瞩目的活动。在这个特殊的时刻&#xff0c;如果你想以独特的方式展现自己&…

肉豆蔻酰六肽-16——让皮肤更加光滑、更加柔软

肉豆蔻酰六肽-16 一种合成的脂肪酸连接肽&#xff0c;已知可提高皮肤的弹性&#xff0c;明显镇静&#xff0c;并帮助皮肤看起来和感觉更光滑、更柔软。它是由肉豆蔻酸与六肽 16 结合而成。肉豆蔻酰六肽 16 被归类为蛋白质刺激肽&#xff0c;这意味着它可以帮助皮肤表面&#x…

Android AIDL中使用Surface问题

1.构建ITest.aidl文件 package com.xxx.xxxx;import android.view.Surface;interface IMonitorService {boolean addSurface(in Surface surface);boolean removeSurface(in Surface surface); } 2.构建时报错 3.Surface源码分析 android.view.Surface中包含两个Surface类&am…