一:封装介绍

**封装(encapsulation)就是把抽象出的数据 [ 属性 ] 和对数据的操作 [ 方法 ]封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作[ 方法 ],才能对数据进行操作。

**

二:封装的理解和好处

  • 隐藏实现细节:方法(连接数据库)<- 调用(传入参数)
  • 可以对数据进行验证,保证安全合理

    三:封装的实现步骤(重点)

  1. 将属性进行私有化private【不能直接修改属性】
  2. 提供一个公共的(public)set方法,用于对属性判断并赋值
  3. 提供一个公共的(public)get方法,用于获取属性的值public数据类型

    1. public class person{
    2. private String name;
    3. private int age;
    4. public String getName() {
    5. return name;
    6. }
    7. public void setName(String name) {
    8. this.name = name;
    9. }
    10. public int getAge() {
    11. return age;
    12. }
    13. public void setAge(int age) {
    14. this.age = age;
    15. }
    16. }

    1:练习

    image.png ```java package Date0730;

/**

  • 作者:sakura
  • 日期:2022年07月31日 00:31 */ public class test01 {

} class People { private String name; private int age;

  1. private double salary;
  2. //具体得到检查
  3. public People(String name,int age){
  4. setAge(age);
  5. setSalary(salary);
  6. setName(name);
  7. }
  8. public String getName() {
  9. return name;
  10. }
  11. public void setName(String name) {
  12. if(name.length() >= 2 && name.length() <=6 ) {
  13. this.name = name;
  14. }else {
  15. System.out.println("名字的长度不对,需要(2-6)个字符,默认名字");
  16. this.name = "无名人"
  17. }
  18. public int getAge() {
  19. return age;
  20. }
  21. public void setAge(int age) {
  22. if(age >= 1 && age <= 120) {//如果是合理范围
  23. this.age = age;
  24. } else {
  25. System.out.println("你设置年龄不对,需要在 (1-120), 给默认年龄 18 ");
  26. this.age = 18;//给一个默认年龄
  27. }
  28. }
  29. public double getSalary() {
  30. return salary;
  31. }
  32. public void setSalary(double salary) {
  33. this.salary = salary;
  34. }

}

  1. <a name="RI10E"></a>
  2. ### 四:将构造器和setxxx结合
  3. ```java
  4. public Person(String name, int age, double salary) {
  5. // this.name = name;
  6. // this.age = age;
  7. // this.salary = salary;
  8. //我们可以将 set 方法写在构造器中,这样仍然可以验证
  9. setName(name);
  10. setAge(age);
  11. setSalary(salary);
  12. }