java为什么使用封装_为什么要使用封装? - Vaibhav Singh

Java是一种面向对象的编程语言(它符合纯面向对象的大多数属性),它包括四个OOP支柱(面向对象的编程)概念,即:

抽象化

封装形式

继承

多态性

今天,我将深入探讨称为封装的重要支柱。

作为参考,封装可以定义为“ 将数据和功能绑定到一个单元中,这样就可以保护它们免受外界干扰和滥用。”

因此,让我们首先列出我们想到的问题:

为什么它是重要的支柱?为什么要使用它?

Java必须支持/实现封装的哪些机制?

封装与数据隐藏?

为什么重要?

正如定义所言,要确保不受外界干扰和滥用。让我们以一个复杂的对象为例来理解滥用。

因此,我有一个封装的Employee 类,其中包含员工详细信息(例如id,薪金,部门,项目列表等)和Project类对象,其中包含与项目相关的详细信息(例如id,名称,成本等)作为一个单元。

class Employee

{

String name;

Date age;

Date dateOfJoining;

..

..

List projects;

Double getProjectCost() { ... some implementation ..}

List  getGovtProjectNames() { ... some implementation ...}

..

..

}

现在,由于行为是暴露给外部世界的,因此可以这样做:

age = 100; //I am gonna live a long life :Pprojects = new LinkedList<>();

...

..

etc

因此,这很明显是滥用,因为允许外部干扰内部。

我们如何实现封装?

通过将类的成员变量声明为私有,并提供公共的setter / getter方法来修改和查看变量值。

私有成员变量只能在类中使用。只有使用getter方法,才能在类外部访问私有成员。

因此,高于雇员级别的员工应如下所示:

@Data //lomboks way to remove boiler-plate get/setclass Employee

{

private String name;

private Date age;

private Date dateOfJoining;

..

..

private List projects;

public Double getProjectCost()

{ ... some implementation ..}

public List  getGovtProjectNames()

{ ... some implementation ...}

..

..

}

为什么要使用封装?

灵活性:通过新的要求集更改封装的代码更加灵活和容易。例如,如果添加/删除员工项目的要求发生变化,我们可以轻松地更新setter方法()或提供的方法中的逻辑。

可重用性:封装的代码可以在整个应用程序中或在多个应用程序中重用。

可维护性:将应用程序代码封装在单独的单元(类,接口,方法,getter / setter等)中时,可以轻松更改或更新应用程序的一部分而不会影响其他部分,从而减少了开发人员的工作量和时间。

可测试性:对于封装类,编写单元测试更加容易,因为成员变量不会分散在各处,从而也减少了测试人员的时间和精力。

数据隐藏:方法的调用者对类的内部逻辑一无所知,因为调用者函数看不到成员变量。调用方仅知道要传递给setter方法(或任何方法)以使用该值进行初始化的参数。例如

public void setAge(int age)

{

if (age < 18 || age > 55)

{

throw IllegalArgumentException("Age must be from 18 to 55");

}

this.age = age;

}

封装与数据隐藏?

首先定义数据隐藏DataHiding:数据隐藏意味着保护类成员免受非法或未经授权的访问。

因此,我们可以说封装通过将变量设为私有,并公开该属性以访问将公开的私有数据,来自动实现数据隐藏的概念,从而为数据提供安全性。

数据隐藏和封装之间的主要区别

封装处理隐藏程序的复杂性。另一方面,数据隐藏处理程序中数据的安全性。

封装着重于包装(封装)复杂数据,以便为用户提供更简单的视图。另一方面,数据隐藏着眼于限制数据的使用,旨在确保数据的安全性。

在封装中,数据可以是公共的或私有的,但是在数据隐藏中,数据必须仅是私有的。

数据隐藏是一种过程以及一种技术,而封装是数据隐藏中的子过程。

结论

最后,我要说的是,数据隐藏和封装都齐头并进,其中数据隐藏着重于数据的安全性,封装着重于降低系统的复杂性,以使应用程序更加用户友好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值