Java-封装


封装是四个基本的 OOP 概念之一。另外三个是继承、多态和抽象。

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

在Java中实现封装 -

  • 将类的变量声明为私有。

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

例子

以下是演示如何在 Java 中实现封装的示例 -

/* File name : 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 类的变量 -

/* File name : 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());
   }
}

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;
   }
}

输出

Name : James Age : 20

封装的好处

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

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