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

java特性之封装

一,什么是封装

封装指的是将数据和操作数据的方法有机结合,同时对外隐藏内部的细节,只暴露必要的接口供其他对象使用。

Java的封装主要是通过类和访问权限来实现的,类可以将数据和操作数据的方法进行有机结合在一起,访问权限用来控制成员变量和成员方法能否在类外进行使用,从而实现对对象内部的实现细节进行隐藏。同时包也是对类,接口等的封装机制的体现,是一种对类和接口很好的组织方式。
封装性的主要目的是保护数据,防止外部的不合理访问和修改,从而提高代码的可维护性和可复用性。


二,学习封装前的必备知识点

2.1访问限定符

public是Java里权限最大的,当前类,同一个包中的其他类,不同包的子类,不同包的非子类,都可以访问。可以理解外一个人的外貌,每个人都可以看得见。

protected是访问权限里面第二大的,通常用于被继承的父类,当前类,同一个包中的其他类,不同包的子类(这里看不懂不同包的子类也不要紧,后面学继承时候就知道了可以标记一下)。

default并不是一个关键字,当类内的方法或者属性没有被任何访问修饰限定符修饰时,当前方法或者属性被称为包访问权限。default可以成为默认修饰

private是所有权限中最小的,相当于某件事情只有自己知道,其他任何人都不知道。(只能在自己这个类里面使用)

大多数情况下,成员属性设置为private,成员方法设置为public,将对象的属性隐藏起来,提供开放的接口供给外部使用,这些接口可以操作成员属性。可以操作成员属性的方法一般有两种,一种是set方法,一种是get方法

set方法可以对成员属性进行赋值
get方法可以取到成员属性的值

当成员属性数量多的时候,一个一个的定义set,get方法就会很繁琐并且消耗大量时间,此时编译器就提供了相应的快捷方式,可以一键生成set,get方法

public class Test1 {
private int age;//私有
private String name;//私有

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

2.2 包package

什么是包?

在面向对象体系中,提出了软件包的概念,即为了更好的管理类,创建一个包把多个类收集在一起,称之为软件包。有点类似于文件夹,文件夹里面可以存储多个内容,将内容类似的存储在同一个文件夹中,比如说一个班级有男生和女生,男生的信息存储到一号文件夹,女生的信息存储到二号文件夹,此时学生的信息可以更好的进行管理
包是对类和接口等的封装机制的体现 ,是类或者接口的容器,它通过命名空间来区分不同的类,使得即使类名相同,只要它们位于不同的包中就不会发生冲突。这也就意味着在同一个工程里面可以存在名字相同的类

如何导入包?

Java本身提供了很多现成的类供我们使用,但在使用之前必须要进行导包,导包需要使用到import关键字,但大多数时候并不需要我们手动导包,编译器会自动导包

顾名思义就是将包内我们所需要的类导入当前类中,import java.util.*,并非是将util包内的全部类导入当前类,而是代码需要调用哪个类,编译器就加载对应的util底下的类出来供给JVM使用。

如何自定义一个包呢?

1、在文件的最上方加上一个package语句声明当前类在哪个包中
2、包名通常会使用公司的域名的颠倒形式(例如:com.bit.www),并且必须要小写字母
3、包名和代码路径相匹配,例如创建com.bit.demo1的包,那么会存在一个对应的路径com/bit/demo1来存储代码
4、如果一个类没有package语句,那么当前类是存放在默认包底下的,src是默认包。
5、程序在运行的时候是默认在src这个包里面查找可执行程序的。

http://www.jsqmd.com/news/637341/

相关文章:

  • 【AIAgent长期记忆管理黄金法则】:SITS2026首席架构师首次公开3层记忆分层架构与实时衰减算法
  • 【LeetCode HOT100 】:最小覆盖子串——滑动窗口的经典应用题解
  • 别再对着空白界面发呆了!手把手教你用GNURadio Companion(GRC)画出第一个信号流图
  • GoB插件深度解析:3步实现Blender与ZBrush专业级数据传输
  • TortoiseGit与Gerrit完美配合:Windows下的代码Review避坑指南
  • 2026年评价高的水泥草坪砖长期合作厂家推荐 - 行业平台推荐
  • Harness 中的流式请求与响应多路复用
  • 2026年分体法兰厂家有哪些,分体法兰/SAE法兰/扩口法兰/法兰夹/内螺纹法兰/方法兰,分体法兰采购怎么选择 - 品牌推荐师
  • Qwen3.5-9B-AWQ-4bit多场景方案:跨境电商商品图合规检测(文字/Logo/尺寸)
  • 小米、红米电视系统更新固件ROM合集分享 电视刷机升级固件
  • ArcGIS用户必看:用CC工具箱一键搞定面要素四至点提取与坐标写入
  • SITS2026联合17家头部AI工厂达成共识:大模型工程化已进入“SLA驱动时代”,这6项SLO指标你达标了吗?
  • 利用Chord - Ink Shadow自动化批改作业:教育领域的AI助手实践
  • 块状链表的长度
  • Android音频无线传输终极指南:如何免费实现手机声音实时同步到电脑
  • 从零开始:手把手教你编写第一个CMakeLists.txt(完整实战指南)
  • 3步完成B站M4S视频转换:免费跨平台工具完整指南
  • After Effects (AE)2026超详细保姆级下载安装教程 附软件功能详解(新手零基础适用)
  • CRaxsRat v7.4 实战部署:从零搭建远程管理测试环境
  • 卸船机市场调研:2026 - 2032年复合增长率(CAGR)为2.7%
  • 【一天一个计算机知识】Cyber骇客对数据流的 算力操纵与指令集 ——【<algorithm>头文件】从算法的出处和算法的角度带你解读<algorithm>的内容与机制
  • 如何用Python构建智能交易策略:PyBroker量化框架完整指南
  • PyTorch 2.8镜像科研展示:气候模型输出→AI生成可视化动态气象视频
  • PowerPaint-V1商业修图实战:批量处理产品图,提升工作效率
  • CTF解题实战:手把手教你用JSFuck在线解码器搞定LitCTF 2023那道‘天书’题
  • Handof f协议:多Agent任务交接机制
  • 电视盒子刷机固件合集大全 电视网络机顶盒机顶盒最新更新固件
  • 从Q15到Q31:电机控制算法中的定点数精度权衡与实战选型
  • CodeFormer深度解析:基于代码本查找Transformer的鲁棒盲脸修复实战指南
  • 用Matlab App Designer给杨氏双缝干涉实验做个交互式GUI(附完整源码)