| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- 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。
- */
- }
|