Java封装


封装是四个基本的面向对象概念之一,其他三个是继承、多态和抽象。

Java封装是一种将数据(变量)和作用于数据(方法)的代码包装在一起作为一个单元的机制。在封装中,一个类的变量将对其他类隐藏,并且只能通过其当前类的方法进行访问。因此,它也被称为数据隐藏。

用Java实现封装的方法:

  • 将一个类的变量声明为私有;

  • 提供公共的setter和getter方法来修改和读取变量值。

以下是一个示例,演示了如何使用Java实现封装:

/* 文件名 : EncapTest.java */
public class EncapTest {
    private String name;
    private String idNum;
    private int age;

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public String getIdNum() {
        return idNum;
    }

    public void setAge( int newAge) {
        age = newAge;
    }

    public void setName(String newName) {
        name = newName;
    }

    public void setIdNum( String newId) {
        idNum = newId;
    }
}

公共的setXXX()和getXXX()方法是EncapTest实例变量的访问点,通常这些方法称为getter和setter。因此,想要访问类变量就应该通过这些getter和setter来访问它们。

可以使用以下程序访问EncapTest实例的变量:

/* 文件名 : RunEncap.java */
public class RunEncap {

    public static void main(String args[]) {
        EncapTest encap = new EncapTest();
        encap.setName("James");
        encap.setAge(20);
        encap.setIdNum("12343ms");

        System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge());
    }
}

这将产生以下结果:

Name : James Age : 20

封装的好处


  • 可以将类的字段设置为只读或只写;

  • 一个类可以完全控制其字段中存储的内容。