一、前言
封装是 Java 面向对象编程的重要特性之一,作用是将对象的属性和行为封装在一起,同时限制对这些属性和操作的访问权限,只通过特定的方法来进行访问和修改。
主要优点包括:
-
信息隐藏
:通过将属性私有化,并提供公共的访问方法,可以隐藏内部的实现细节,防止外部代码直接访问和修改对象的内部状态,从而提高了代码的安全性和稳定性。例如:一个表示银行账户的类,将账户余额私有化,只提供存款和取款的方法来操作余额。 -
提高代码的可维护性和可扩展性
:当内部实现需要修改时,只需要修改封装的方法,而不需要修改使用该对象的外部代码。例如:修改计算账户利息的方法,外部调用该方法的代码无需变动。 -
增强代码的可读性和易用性
:外部代码只需要关注公共的方法,而不需要了解内部复杂的实现细节。
二、实现步骤
public class Student {
// 属性
private String name;
private int age;
// get()/set() 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 0) {
System.out.println("年龄不能为负数");
return;
}
this.age = age;
}
}
this
关键字是为了解决 成员变量
和 局部变量
之间发生的同名的冲突。
在上述示例中,name
和 age
被声明为私有属性,通过 getName
、setName
、getAge
和 setAge
方法来进行访问和修改,实现了封装。
三、测试样例
public class Main {
public static void main(String[] args) {
// 创建对象
Student student = new Student();
// 设置属性
student.setName("张三");
student.setAge(-18);
// 打印对象
System.out.println(student);
}
}
运行结果:
年龄不能为负数
姓名:张三
年龄:0
在上述示例中,setAge() 方法在底层判断了年龄不能为负数,这样就能过滤掉一些非法数据,提高了代码的可维护性和可扩展性。