封装是面向对象的三大特征之一。
隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
①封装就是将面对对象的状态和行为看成是一个整体,将二者存放在一个独立的模块中,比如说类
②封装也是信息隐藏,把不需要让外界知道的信息隐藏起来,尽肯能隐藏对象功能实现细节,向外暴露方法,保证外界的安全访问,比如说方法
封装的好处:
①封装提高了代码的安全性。
②隐藏了实现细节,对外提供可以访问的方式。便于调用者的使用。
③提高了代码的复用性。
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 |
|
同一类中 |
√ |
√ |
√ |
√ |
同一包中(子类与无关类) |
√ |
√ |
√ |
|
不同包的子类 |
√ |
√ |
||
不同包中的无关类 |
√ |
|