package p1; /** * @author WanJl * @version 1.0 * @title p1.Demo04 * @description 封装 * @create 2026/7/20 */ public class Demo04 { /* 面向对象的三大特性: 本质上就是减少写代码 为了让代码能够复用 封装 继承 多态 我们先讲第1个:封装 封装的含义和思想: 把该隐藏的隐藏起来,把该显示的显示出来。 隐藏的是功能的实现细节 显示的是功能的调用方式 比如:USB插口,就是一个非常典型的封装 或可以理解为 自己 组装电脑 和 买 一体机 笔记本电脑 比如有个 Person类 public class p1.Person{ //程序 服务 String name; int age; } public static void main(String[] args){//是我们站在用户的角度对程序进行测试的 //创建Person对象 p1.Person p=new p1.Person(); p.name="张三"; p.age=250; // p.age==-250000;虽然代码编译正确,但是不符合现实业务逻辑 //所以就出现了封装 解决的方案有两步: 1、 把 age属性的权限提高,让【本类以外】的都无法访问(赋值、取值) 2、 定义一个为age属性赋值的方法,这个方法是所有人都能访问的,但是方法内要做判断 age<1 || age>130 都不允许赋值,赋值都无效 3、定义一个获取age属性的方法,这个方法是所有人都能访问 } Java的封装,提供了几个关键字,名叫【访问权限修饰符】 public 公开的公共的, 使用public修饰的变量和方法,任何地方的任何类都能访问。 private 私人的是有的,使用private修饰的变量和方法,除了自身之外的任何类都不能访问。 练习: 1、 补全Person类,为name 修饰private,并配置set和get方法 2、 创建 p1.Product 商品类,定义私有成员变量 品牌、名称、价格、数量 并对每个成员变量设置赋值和取值的方法 3、 创建Bird 类,定义私有成员变量 3个,并对每个成员变量设置赋值和取值的方法 封装的思想: 封装 是面向对象的三大特征之一(封装、继承、多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部,外界是无法操作的。 封装的原则: 是把类的某些属性信息隐藏在类的内部,不允许外部程序直接访问, 而是通过该类提供的方法来实现对隐藏信息的操作和访问。 成员变量使用private修饰,让自身以外任何类都无法访问 成员方法使用public修饰,让任何类都能访问,不过在方法内部加以控制和增加业务逻辑 封装的好处: 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性。 封装在Java中主要的体现就是为 类的成员 设置 【访问权限修饰符】 public 公开的公共的, 使用public修饰的变量和方法,任何地方的任何类都能访问。 private 私人的私有的,使用private修饰的变量和方法,除了自身之外的任何类都不能访问。 default 默认的 不使用任何修饰符修饰的变量和方法,本类中、同包中可以访问。 protected 本类中、同包中可以访问。非同包的子类可以访问,等到讲继承的时候再说 */ /* 创建一个学生类Student 包含私有成员变量: id 学号 (从1开始,每位递增1) name 姓名 公共的赋值和取值方法 ------------------------------------------------------------------- 创建一个StudentDemo类 有一个成员变量 整数类型的 studentCount; //表示学生的数量 里面有以下几个方法: 1、初始化方法 initStudents() 该方法会创建一个长度为studentCount的Student数组, 并创建5个学生对象,存入学生数组。 调用该方法时,会[返回]一个存有5位学生的 Student数组 2、随机学生方法 randomStudent() 该方法中调用Random对象,随机出一个 1~studentCount的随机整数(也就是学生id) 调用该方法,会返回随机出的一个学生id。 */ }