为什么要应用封装



在定义类的时候,如果能够间接批改类中的字段那么就可能会呈现以下的状况,age能够设置成1000,score能够设置为10000

#### 封装要解决的问题:

  1. 封装能够暗藏实现的细节
  2. 让使用者只能通过实现写好的拜访办法来拜访这些字段,这样一来咱们只须要在这些办法中减少逻辑管制,限度对数据的不合理拜访、
  3. 不便数据查看,有利于于爱护对象信息的完整性
  4. 便于批改,进步代码的可维护性

    为了实现良好的封装,须要从两个方面思考

  5. 把字段(成员变量)和实现细节暗藏起来,不容许内部间接拜访
  6. 把办法裸露进去,让办法管制这些成员变量进行平安的拜访和操作

    因而,封装就有两个含意:把该暗藏的暗藏起来,把该裸露的裸露进去

    如何应用封装


package com.msbline.oop.test;public class Dog {    private String name;    private int age;    private String color;    public Dog() {    }    public Dog(String name, int age, String color) {        this.name = name;        this.age = age;        this.color = color;    }    public void eat(){        System.out.println("eating bones");    }    public void play(){        System.out.println("play......");    }    public void show(){        System.out.println("name:"+this.name);        System.out.println("age:"+this.age);        System.out.println("color:"+this.color);    }    public void setAge(int age) {        if (age <= 20){            this.age = age;        } else {            System.out.println("年龄不非法");        }    }    public void setName(String name) {        this.name = name;    }    public void setColor(String color) {        this.color = color;    }    public String getName() {        return name;    }    public int getAge() {        return age;    }    public String getColor() {        return color;    }}
package com.msbline.oop.test;public class Test {    public static void main(String[] args) {        Dog dog = new Dog();        dog.setName("大黄");//        dog.age=20;        dog.setAge(21);        dog.setColor("yellow");        dog.show();    }}

狭义的封装

能够将实现特定性能的代码块封装成一个办法,供不同的程序调用,比方咱们我的项目当中的工具类

拜访控制符


总结