封装(encapsulation)是面向对象编程中的一个重要概念,它指的是将数据和操作数据的方法绑定在一起,并且隐藏对象的内部实现细节,只暴露必要的接口给外部使用。通过封装,可以提高代码的安全性、可维护性和可重用性。
封装的实现
在Java中,封装通常通过以下方式实现:
- 将类的成员变量声明为私有(private),只能在类的内部访问
- 提供公共(public)的 getter 和 setter 方法来访问和修改成员变量的值
- 可以在 getter 和 setter 方法中添加逻辑来控制对成员变量的访问,例如验证输入数据的合法性、计算衍生属性等
- 可以使用访问修饰符来控制类的访问权限,例如将类声明为 public 或者 package-private
- 可以使用 final 关键字来防止类被继承或者方法被重写,从而保护类的封装性
高内聚低耦合是面向对象设计的一个重要原则,封装有助于实现高内聚和低耦合。高内聚指的是一个类应该只负责一件事情,具有单一的职责,这样可以提高类的可维护性和可重用性。低耦合指的是一个类应该尽量减少对其他类的依赖,这样可以提高系统的灵活性和可扩展性。
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| package study.ghr.pk1;
public class TestEncapsulation { 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) { if (age > 0 && age < 150) { this.age = age; } else { System.out.println("invalid age: " + age); } } }
class TestEncapsulationMain { public static void main(String[] args) { TestEncapsulation t = new TestEncapsulation(); t.setName("Zhang san"); t.setAge(20); System.out.println("name: " + t.getName() + ", age: " + t.getAge()); t.setAge(-1); } }
|