Java入门第30课:封装、private、getter/setter
发布时间:2026/6/23 19:59:02
分类:文化教育
浏览:1234

一、学习目标理解面向对象三大特性之一封装的含义与好处掌握 private 私有访问修饰符作用熟练编写 get、set 方法操作私有成员变量在 set 方法中增加数据合法性校验分清四种访问修饰符简单区别二、封装思想1. 为什么需要封装之前代码中成员变量直接暴露外部可以随意修改java运行Student s new Student(); s.age -50; // 年龄负数数据非法代码无法拦截封装核心隐藏对象内部细节仅对外提供安全访问入口。 实现思路使用private修饰成员变量外部无法直接访问提供公共 get/set 方法通过方法读写变量中间可校验数据2. 封装三大好处安全性在 set 方法校验数据过滤非法值代码复用读写逻辑统一放在方法多处调用不用重复写简化调用使用者不用关心内部实现只调用提供的方法三、private 关键字私有修饰符修饰成员变量、成员方法作用范围仅当前类内部可见其他类完全无法访问java运行public class Student { // 私有变量外部类不能直接 s.age private String name; private int age; }测试类直接访问会编译报错java运行public class Test { public static void main(String[] args) { Student s new Student(); s.age 18; // 报错age是private } }四、getter、setter 标准写法规则set 方法给变量赋值无返回值参数和变量类型一致 格式public void setXxx(类型 参数)get 方法获取变量值无参数返回值和变量类型一致 格式public 类型 getXxx()boolean 类型变量 get 方法推荐用isXxx()完整学生类示例java运行public class Student { // 私有成员变量 private String name; private int age; // name 的 set方法 public void setName(String name) { this.name name; } // name 的 get方法 public String getName() { return this.name; } // age 的 set方法增加数据校验 public void setAge(int age) { // 合法年龄 0~120 if (age 0 age 120) { this.age age; } else { System.out.println(年龄输入不合法赋值失败); this.age 0; } } // age 的 get方法 public int getAge() { return this.age; } // 展示信息方法 public void show() { System.out.println(姓名 name 年龄 age); } }测试类使用java运行public class TestStudent { public static void main(String[] args) { Student s new Student(); // 设置值 s.setName(小明); s.setAge(20); // 获取值 System.out.println(s.getName()); System.out.println(s.getAge()); s.show(); // 传入非法年龄 s.setAge(-10); System.out.println(s.getAge()); } }运行结果plaintext小明 20 姓名小明年龄20 年龄输入不合法赋值失败 0五、带构造方法 封装综合案例java运行public class Person { private String name; private int age; // 无参构造 public Person(){} // 有参构造 public Person(String name, int age) { this.name name; // 构造中赋值也调用set复用校验逻辑 setAge(age); } // get set public void setName(String name) { this.name name; } public String getName() { return name; } public void setAge(int age) { if(age 0 age 150){ this.age age; }else{ System.out.println(年龄非法); } } public int getAge() { return age; } public void info(){ System.out.println(name age 岁); } }六、四种访问修饰符简单认知本课拓展表格修饰符本类同包子类任意类private✅❌❌❌默认 (不写)✅✅❌❌protected✅✅✅❌public✅✅✅✅本课重点只用private和public。七、常见易错点私有变量直接用对象。变量访问 → 编译报错必须走 get/setset 方法忘记做数据校验失去封装安全意义get/set 方法大小写错误变量 age → setAge不是 setageboolean 类型变量private boolean sex; 推荐isSex()而非 getSex ()八、课堂练习定义手机类 Phone私有属性 brand 品牌、price 价格编写 get、set 方法价格不能小于 0小于 0 则提示价格非法创建对象通过 set 赋值get 打印信息九、课后作业定义 Dog 类私有 name 名字、int age、boolean isPet 宠物完善全套 get/setage 限制 0~20写有参构造调用 set 方法赋值编写 show 方法输出全部属性本课总结封装隐藏内部数据对外提供统一访问接口private 修饰变量外部无法直接访问setXxx 赋值可校验数据getXxx 获取值封装核心价值保护数据安全、统一控制逻辑