封装是面向对象的三大特性之一,其含义简单来说就是把类的成员属性方法等包装起来,当类的调用者调用时不需要知道其细节,只要知道如何使用就好。
封装需要用到private这个关键字。 关于private和public的区别:被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,权限最大 而private修饰的成员只能在定义它的本类中调用。
不使用封装
:类的调用者需要知道类的细节,比如类里有哪些成员。
public class Person {
public int age=19;
public String name="xiaozhang";
public static void main(String[] args) {
Person p=new Person();
System.out.println(p.name+"今年"+p.age+"岁");
}
}
使用封装
:把成员属性设为private修饰,对外提供public修饰的方法以供调用。
类的调用者不需要知道类的内部细节,只需要知道如何使用
public class Person {
private int age=19;
private String name="xiaozhang";
public void show(){
System.out.println(name+"今年"+age+"岁");
}
public static void main(String[] args) {
Person p=new Person();
p.show();
}
}
当需要知道或者改变成员属性的值时,可以通过在类内设置getter和setter方法。
封装的优点:
- 良好的封装能够减少耦合。
- 类内部的细节可以自由修改。
- 可以对成员变量进行更精确的控制。
- 隐藏信息,实现细节