Java基础教程(009): Java 的封装
文章目录
- 8、封装
- 8.1、什么是封装?
- 8.2、为什么需要封装?
- 8.3 示例代码
8、封装
8.1、什么是封装?
封装就是把对象的属性和方法“包裹”起来,控制外部是否允许直接访问它们。
- 通过访问修饰符(如
private
)隐藏属性。 - 通过
public
方法(getter/setter)提供对这些属性的安全访问。
8.2、为什么需要封装?
- 保护数据,防止被非法访问或赋值。
- 控制访问级别,提供统一入口修改属性。
- 增强代码的可维护性和可读性。
8.3 示例代码
我们在前面的 Student
类基础上,做如下封装:
1️⃣封装后的类:
package src.com.wang.test;public class Student2 {// 私有属性,外部不能直接访问private String name;private int age;private double score;// 公共的 Getter 和 Setter 方法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 > 0 && age < 150) {this.age = age;} else {System.out.println("年龄不合法!");}}public double getScore() {return score;}public void setScore(double score) {if (score >= 0 && score <= 100) {this.score = score;} else {System.out.println("成绩不合法!");}}// 其他方法public void printInfo() {System.out.println("学生姓名: " + name);System.out.println("学生年龄: " + age);System.out.println("学生成绩: " + score);}
}
2️⃣调用类:
package src.com.wang.test;public class Student2Test {public static void main(String[] args) {// 创建对象Student2 stu = new Student2();// 通过 setter 方法赋值(不是直接访问属性)stu.setName("李四");stu.setAge(20);stu.setScore(88.5);// 通过 getter 方法访问属性System.out.println("姓名: " + stu.getName());System.out.println("年龄: " + stu.getAge());System.out.println("成绩: " + stu.getScore());// 调用打印方法stu.printInfo();}
}
3️⃣运行结果:
姓名: 李四
年龄: 20
成绩: 88.5
学生姓名: 李四
学生年龄: 20
学生成绩: 88.5
封装的关键点:
项目 | 说明 |
---|---|
private | 用于修饰属性,使外部无法直接访问 |
public 方法 | getXxx() 和 setXxx() 方法是访问属性的唯一通道 |
控制数据合法性 | 可在 setter 方法中添加判断逻辑 |