Skip to content

封装

封装 是指将对象的 属性和方法 封装在对象内部,只允许通过对象提供的 方法 来访问和修改对象的内部属性。

封装最主要的目的是隐藏了对象的内部实现细节,保护对象的完整性,并提高了代码的可维护性和可重用性。

封装可以通过以下 2 种方式实现:

  • 将数据隐藏在类内部:可以使用 private 将属性声明为私有,外部无法直接访问这些属性;
  • 提供公共方法(gettersetter)来访问和修改属性:通过定义 publicgettersetter 方法,外部调用这些方法访问和修改属性;

简单示例:

java
class Person {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = 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;
  }
}
java
Person person = new Person("Yibo wang", 18);

person.setName("sunny");
person.setAge(20);

System.out.println(person.getName());
System.out.println(person.getAge());

权限修饰符

实现封装就是控制类中成员的可见性范围。这就需要权限修饰符来控制了。

权限修饰符主要分为以下 4 种(从上到下,访问权限越来越大):

修饰符本类内部本包内部子类内部非子类内部
private✔️
缺省(default)✔️✔️
protected✔️✔️✔️
public✔️✔️✔️✔️

TIP

  1. 外部类 (class) 只能使用 public缺省修饰;
  2. 类内部的属性和方法,可以使用 private缺省protectedpublic 4种修饰符进行修饰;

JavaBean 风格

JavaBean是一种符合特殊约定的 java 类,用于封装数据和提供对这些数据的访问方法。

JavaBean 通常用于表示应用程序中的业务对象,例如用户、订单、产品等。

它的主要目的是提供一种标准化的方式来封装和访问数据。

JavaBean的标准约定:

  • 公有的无参构造方法:JavaBean 必须有一个公有的无参构造方法,以便可以通过反射机制创建实例;
  • 私有的属性:JavaBean的属性应该声明为 peivate,以实现封装;
  • 共有的 gettersetter 方法:每个属性都应该提供公有的 gettersetter 方法,以允许外部代码访问和修改属性的值;

简单示例:

java
public class Customer {
  private int id;
  private String name;

  public Customer() {
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }
}

Released under the MIT License.