封装

封装是面向对象的三大特征之一。

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

①封装就是将面对对象的状态和行为看成是一个整体,将二者存放在一个独立的模块中,比如说类

②封装也是信息隐藏,把不需要让外界知道的信息隐藏起来,尽肯能隐藏对象功能实现细节,向外暴露方法,保证外界的安全访问,比如说方法

封装的好处:

①封装提高了代码的安全性。

②隐藏了实现细节,对外提供可以访问的方式。便于调用者的使用。

③提高了代码的复用性。

 1 class Person {
 2     int age;
 3     String name;
 4 
 5     public void show() {
 6         System.out.println("age=" + age + ",name" + name);
 7     }
 8 }
 9 
10 public class PersonDemo {
11     public static void main(String[] args) {
12         // 创建Person对象
13         Person p = new Person();
14         p.age = -20; // 给Person对象赋值
15         p.name = "张三";
16         p.show(); // 调用Person的show方法
17     }
18 }

通过上述代码发现,虽然我们用Java代码把Person描述清楚了,但有个严重的问题,就是Person中的属性的行为可以任意访问和使用。而这样是很不安全的

解决方式:使用修饰符 private(私有,权限修饰符)要将Person的属性和行为私有起来,这样就无法直接访问

可无法直接访问后,错误的值无法赋值,可是正确的值也赋值不了

解决方式:提供访问方式

为成员变量提供赋值(设置 set)方法,取值(获取 get)方法

 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     }

java中有四种访问权限修饰符,分别是private私有的,default不写,protected受保护的,public公共的

 

public

protected

default

private

同一类中

同一包中(子类与无关类)

不同包的子类

不同包中的无关类