在面向对象程序涉及方法中,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
良好的封装能够减少耦合;类内部的结构可以自由修改;可以对成员变量进行更精确的控制;隐藏信息,实现细节
这里回顾一下 成员变量和局部变量
a-成员变量; b-局部变量
1.在类中的位置不同
a在类中方法外面
b在方法或则代码块中,或则方法的声明上(即在参数列表中)
2.在内存中的位置不同
a在堆中,b在栈中
3.生命周期
a随着对象的创建而存在,随着对象的消失而消失
b随着方法的调用或则代码块的执行而存在,随着方法的调用完毕或则代码块的执行完毕而消失
4.初始值
a有默认初始值
b没有默认值,使用之前需要赋值,否则编译器会报错
实现封装的步骤
1.修改属性的可见性来限制对属性的访问(一般限制是private)
public class Person {
private String name;
private int age;
}
可以看出 name和age属性设置为私有的,只能奔雷才能访问,其他类无法访问。这样就实现了对信息的隐藏。
2.对每个值属性提供对外的公共方法访问,也就是创建一对赋值取值的方法,用于对私有属性的访问
代码如下
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
上面采用this关键字是为了解决实例变量与局部变量名称之间发生的同名的冲突
下面是为了说明 Person类的变量怎么被访问。public方法是外部类访问该类成员变量的入口,通常情况下,这些方法被称为getter和setter方法