封装是四个基本的OOP概念之一。另外三个是继承,多态和抽象。
封装是在做一个类中的私有字段,并通过公有方法提供接入字段的技术。如果一个字段被声明为private,它不能由类外的任何人访问,从而隐藏了类中的字段。为此,封装也称为数据隐藏。
封装可以被描述为防止代码和数据由定义在类外的其他代码随机访问的保护屏障。访问数据和代码被紧紧通过接口控制。
封装的主要优点是修改我们的实现的代码不会破坏其他人谁使用我们的代码的代码的能力。有了这个功能封装提供了可维护性,灵活性和可扩展到我们的代码。
让我们来看看,描绘封装一个例子:
/* 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; } }
公有方法包括接入点从外部Java世界接入到这个类的字段。通常情况下,这些方法称为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()); } }
这将产生以下结果:
Name : James Age : 20
一个类的字段可以只读作出或只写。
一个类可以有完全控制什么是存储在它的字段。
一类的用户不知道如何在类存储其数据。一个类可以改变一个字段的数据类型和类的使用者不需要更改任何其代码。