封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式

封装原则

  1. 将不需要对外提供的内容都隐藏起来
  2. 把属性都隐藏,提供公共方法对其访问

    封装好处

  3. 提高数据访问的安全性

  4. 隐藏了实现细节

    从数据安全角度

    没有封装,在外部类中可以直接访问修改数据,造成数据不安全
    1. public class Employee
    2. {
    3. double salary;
    4. }
    1. public class Manager
    2. {
    3. public static void main(String[] args)
    4. {
    5. Employee emp=newEmployee();
    6. emp.salary=0.0; //直接读取数据不安全
    7. }
    8. }

    封装的控制和实现

    private私有访问修饰符修饰变量
    1. public class Employee
    2. {
    3. private double salary;
    4. }
    1. public class Manager
    2. {
    3. public static void main(String[] args)
    4. {
    5. Employee emp=newEmployee();
    6. emp.salary=0.0; //报错
    7. }
    8. }

封装的控制和实现

提供一个公共的方法的访问方式

  1. public class Employee
  2. {
  3. private double salary;
  4. public void setSalary(double newSalary)
  5. {
  6. if(newSalary>=5000)
  7. {
  8. salary=newSalary;
  9. }
  10. else
  11. {
  12. System.out.println("对不起,设置员工的工资不符合员工最低工资标准");
  13. }
  14. }
  15. public double getSalary()
  16. {
  17. return salary;
  18. }
  19. }
  1. public class Manager
  2. {
  3. public static void main(String[] args)
  4. {
  5. Employee emp = new Employee();
  6. emp.setSalary(6000);
  7. }
  8. }

面向对象的封装机制

该露的露,该藏的藏

我们程序设计要追求“高内聚,低耦合”

高内聚

就是类的内部数据操作细节自己完成,不允许外部干涉

低耦合

仅暴露方法给外部使用

数据的隐藏

应禁止直接访问一个对象中数据的实际表示,而通过操作方法来访问,这称为数据的隐藏

追求的是提高数据访问的安全性