封装将类的某些信息隐藏在类内部,不允许外部程序直接访问,只能通过该类提供的方法来实现对隐藏信息的操作和访问。例如:一台计算机内部极其复杂,有主板、CPU、硬盘和内存, 而一般用户不需要了解它的内部细节,不需要知道主板的型号、CPU 主频、硬盘和内存的大小,于是计算机制造商将用机箱把计算机封装起来,对外提供了一些接口,如鼠标、键盘和显示器等,这样当用户使用计算机就非常方便。

封装的特点:

  • 只能通过规定的方法访问数据。
  • 隐藏类的实例细节,方便修改和实现。

实现封装的具体步骤如下:

  1. 修改属性的可见性来限制对属性的访问,一般设为 private。
  2. 为每个属性创建一对赋值(setter)方法和取值(getter)方法,一般设为 public,用于属性的读写。
  3. 在赋值和取值方法中,加入属性控制语句(对属性值的合法性进行判断)。

例 1
下面以一个员工类的封装为例介绍封装过程。一个员工的主要属性有姓名、年龄、联系电话和家庭住址。假设员工类为 Employee,示例如下:

public class Employee {private String name; // 姓名private int age; // 年龄private String phone; // 联系电话private String address; // 家庭住址public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {// 对年龄进行限制if (age < 18 || age > 40) {System.out.println("年龄必须在18到40之间!");this.age = 20; // 默认年龄} else {this.age = age;}}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

如上述代码所示,使用 private 关键字修饰属性,这就意味着除了 Employee 类本身外,其他任何类都不可以访问这些属性。但是,可以通过这些属性的 setXxx() 方法来对其进行赋值,通过 getXxx() 方法来访问这些属性

在 age 属性的 setAge() 方法中,首先对用户传递过来的参数 age 进行判断,如果 age 的值不在 18 到 40 之间,则将 Employee 类的 age 属性值设置为 20,否则为传递过来的参数值。

编写测试类 EmployeeTest,在该类的 main() 方法中调用 Employee 属性的 setXxx() 方法对其相应的属性进行赋值,并调用 getXxx() 方法访问属性,代码如下:

public class EmployeeTest {public static void main(String[] args) {Employee people = new Employee();people.setName("王丽丽");people.setAge(35);people.setPhone("13653835964");people.setAddress("河北省石家庄市");System.out.println("姓名:" + people.getName());System.out.println("年龄:" + people.getAge());System.out.println("电话:" + people.getPhone());System.out.println("家庭住址:" + people.getAddress());}
}

运行该示例,输出结果如下:

姓名:王丽丽
年龄:35
电话:13653835964
家庭住址:河北省石家庄市

通过封装,实现了对属性的数据访问限制,满足了年龄的条件。在属性的赋值方法中可以对属性进行限制操作,从而给类中的属性赋予合理的值, 并通过取值方法获取类中属性的值(也可以直接调用类中的属性名称来获取属性值)。

1.1 Java类的封装相关推荐

  1. 十三、java类的封装、继承、多态

    面向对象的三个基本特性就是:封装.继承和多态. 前面讲解了java 程序都是由类文件组成的,java是面向对象的程序设计语言,在java中面向对象的思想就是由类的设计来体现的,也即类的继承.封装和多态 ...

  2. java类的封装_Java类中的封装

    1.Java类中的封装 学习了访问权限修饰符后,应该可以理解封装性的概念和含义.封装性是面向对象三大特征之一 封装性是一种信息隐藏技术 2.封装的概念 在面向对象程式设计方法中,封装(英语:Encap ...

  3. Java 类的封装、继承、多态

    // 封装.继承.多态 class Person1{String name;int age;private int height;// 私有 封装public Person1(String name, ...

  4. Java小白入门200例79之Java类的封装

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

  5. 多重继承_Python 和 Java 基础对比 10 —— 类的封装、继承和多态

    @Python大星 一.Python 类的封装.继承和多态 封装 继承 Python 支持多父类的继承机制,所以需要注意圆括号中基类的顺序,若是基类中有相同的方法名,并且在子类使用时未指定,Pytho ...

  6. treegrid 与java交互_针对dhtmlX当中的treegrid在java类当中的封装实现的步骤(后台代码)...

    查看API实现的方式 了解其返回值的解析方式 使用Java类进行封装并且实现返回xml的String到前台 查看API的实现方式,dhtmlx的官方文档中 C true true 从xml文档中便可得 ...

  7. java系列6:封装

    为什么使用封装? java类的封装性就是不能让外面du的类随意修改一个类的成员变量 封装的方法: 方法的使用 关键字private 被private修饰的成员只能在本类中使用,其他的类中使用就得使用间 ...

  8. excel字段自动java类,Java 接口自动化系列--工具类之Excel测试数据解析封装

    在进行数据解析时,先来看看excel测试数据格式,这里采用接口和测试数据分离的方式,即分为两个sheet页签分别存放接口信息,用例信息 excel封装成对象步骤 1.导入easypoi的坐标 2.加载 ...

  9. 杨校老师课堂之Java类与对象、封装、构造方法

    杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...

最新文章

  1. transient HashMap使用目的分析
  2. 将子目录分离(移动)到单独的Git存储库中
  3. docker与k8s面试题基础
  4. html表格数据循环展示,MVC在View中循环数据在table中显示
  5. wxWidgets:wxDateSpan类用法
  6. python删除列表中的重复值_如何从 Python 列表中删除重复项
  7. 马化腾又要发红包!648亿港元,最多腾讯2%股份,我酸了...
  8. 【PSD分层海报模板素材】快乐开学季 敬爱教师节!
  9. 大数据_Flink_流式处理_简介_为什么要用Flink---Flink工作笔记0002
  10. linux快速mysql5.7_Linux下安装MySQL 5.7
  11. VirtualBox – Error In supR3HardenedWinReSpawn 问题解决办法
  12. 航拍+AI︱极简的视频风格迁移体验
  13. Android 用java代码动态修改UI界面
  14. 第十四届恩智浦智能汽车大赛车队规划概要
  15. 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
  16. java导出dbf文件_Java 导出dbf文件
  17. 详解JAVA实现支付宝接口编程
  18. Verilog HDL 编程语言接口
  19. 转载:深入浅出的讲解傅里叶变换
  20. 视频监控系统上云解决方案EasyCVR集成海康EHome私有协议系列——文件查找操作流程

热门文章

  1. 数据分析(排序,数据特征、平均数、方差等,累计统计,相关分析)
  2. Linux 网络子系统之NAPI书签
  3. VB查询数据库之写入数据库——机房收费系统总结(三)
  4. [Linux].netrc或者_netrc使用可以
  5. 利用序列化进行文件读写
  6. Java教程 实战学习Struts实例
  7. CString::GetBuffer函数作用
  8. 膨胀卷积(Dilated convolution)
  9. 文本挖掘预处理流程总结(1)— 中文
  10. python 语言教程(4)元组