目录

JAVA 封装


封装

的含义封装,是为了确保 "sensitive" 数据对用户隐藏。为了实现这一目标,您必须:

  • 将类变量/属性声明为private
  • 提供公众得到访问和更新 a 值的方法private多变的

获取和设置

您从上一章中了解到private变量只能在同一个类中访问(外部类无法访问它)。但是,如果我们提供公共服务,则可以访问它们得到方法。

这个get方法返回变量值,并且set方法设置值。

两者的语法都是以其中之一开头get或者set,后跟变量名称,第一个字母大写:

示例

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

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

示例解释

这个get方法返回变量的值name

这个set方法采用一个参数(newName)并将其分配给name多变的。这this关键字用于引用当前对象。

然而,作为name变量声明为private, 我们不能从此类外部访问它:

示例

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

运行示例 »

如果变量被声明为public,我们期望得到以下输出:

John

然而,当我们尝试访问private变量,我们得到一个错误:

MyClass.java:4: error: name has private access in Person
    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

相反,我们使用getName()setName()访问和更新变量的方法:

示例

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.setName("John"); // Set the value of the name variable to "John"
    System.out.println(myObj.getName());
  }
}

// Outputs "John"

亲自试一试 »


为什么要封装?

  • 更好地控制类属性和方法
  • 可以制作类属性只读(如果您只使用get方法),或只写(如果您只使用set方法)
  • 灵活:程序员可以更改代码的一部分而不影响其他部分
  • 提高数据安全性