10:封装
封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
- 良好的封装能够减少耦合。
- 类内部的结构可以自由修改。
- 可以对成员变量进行更精确的控制。
- 隐藏信息,实现细节。
实现封装的步骤

1、修改属性的可见性来限制对属性的访问(一般限制为private),代码如下:
public class Person {
//将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
private String name;
private int age;
}
权限修饰符
Java中的权限修饰符主要包括private、public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。区别见下表:
| 权限修饰符 | private | protected | public | default |
|---|---|---|---|---|
| 本类 | 可见 | 可见 | 可见 | 可见 |
| 同包其他类或子类 | 不可见 | 可见 | 可见 | 可见 |
| 其他包的类或子类 | 不可见 | 不可见 | 可见 | 不可见 |
在这些修饰符中,如不直接标明,则默认的修饰符为default ;封装就是通过权限修饰符来修改属性的访问权限。
2、 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,具体代码如下:
public class Demo06 {
//将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
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 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。
3、通过getter和setter方法访问类中私有成员变量的类。代码如下:
public class Application {
public static void main(String[] args) {
Demo06 test = new Demo06(); //创建对象
//通过setter方法写入数据
test.setName("张三");
test.setAge(23);
//通过getter方法读取数据,并打印输出
System.out.println(test.getName());
System.out.println(test.getAge());
}
}
运行结果:
张三
23

浙公网安备 33010602011771号