Encapsulation 在java中是将相关数据(变量)和功能(方法)绑定到一个称为类的单元中的过程。封装可以通过使用访问修饰符来实现,例如 public、private、protected 或 default,因此您的类将不会被其他人未经授权的访问,并且易于维护。
我们可以创建完全封装的类
-
将变量设为私有
-
提供用于访问变量的 getter 和 setter 方法。
封装也被称为data hiding 因为您将变量设为私有,而变量只能通过公共 getter 和 setter 访问。
java中的封装示例:
package com.arpit.java2blog;
public class Employee{
private int employeeId;
private String employeeName;
private String department;
public int getEmployeeId() {
return employeeId;
}
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
}
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public static void main(String args[])
{
Employee e1=new Employee();
e1.setEmployeeId(1);
e1.setEmployeeName("John");
e1.setDepartment("Sales");
System.out.println("=============");
System.out.println("Employee Id: "+e1.getEmployeeId());
System.out.println("Employee Name: "+e1.getEmployeeName());
System.out.println("Employee Department: "+e1.getDepartment());
}
}
当你运行上面的程序时,你会得到下面的输出:
=============
Employee Id: 1
Employee Name: John
Employee Department: Sales
java封装的优点:
-
它提供对数据的控制。例如
setAge(int age) :如果你想在 setter 方法( )中检查员工的年龄是否大于 18 岁。您可以在 setter 方法中轻松完成此操作,而无需破坏任何代码。
-
增加可重用性。
-
使课程易于其他客户使用。
-
它通过将它们绑定到一个单元中并使用适当的访问修饰符来根据需要访问代码,从而帮助开发人员编写更灵活和可维护的代码。
java中抽象与封装的区别:
-
封装意味着使用 getter 和 setter 隐藏数据。抽象意味着使用 abstract class和 interface隐藏实现细节-example/“接口”)。
-
抽象更多是设计级别的概念,而封装更多的是实现级别的概念。
这就是java中的封装。
|