封装在 Java
什么是封装 Java?
封装在 Java 是一种将变量(数据)和方法(代码)包装在一起作为单个单元的机制。它是隐藏信息细节并保护对象的数据和行为的过程。它是四个重要的 OOP 概念之一。封装类易于测试,因此也更适合单元测试。
点击 点击这里 如果视频无法访问
学习封装 Java 与例子
要详细了解什么是封装,请考虑以下具有存款和显示余额方法的银行账户类
class Account { private int account_number; private int account_balance; public void show Data() { //code to show data } public void deposit(int a) { if (a < 0) { //show error } else account_balance = account_balance + a; } }
假设一个黑客设法获取了您的银行账户代码。现在,他试图通过两种方式将金额 -100 存入您的账户。让我们看看他的第一种方法或方法。
方法1: 他试图通过操纵代码将无效金额(例如 -100)存入您的银行账户。
现在的问题是—— 那可能吗? 让我们来研究一下。通常,类中的变量被设置为“私有”,如下所示。它只能通过类中定义的方法访问。其他类或对象都无法访问它们。
如果数据成员是私有的,则意味着它只能在同一个类内访问。外部类不能访问其他类的私有数据成员或变量。因此,在我们的案例中,黑客无法将金额 -100 存入您的账户。
接近2:黑客第一次尝试存入金额失败。接下来,他尝试使用“存款”方法存入金额 -100。
但是方法实现中对负值进行了检查。因此第二种方法也失败了。
因此,您永远不会向外部方泄露您的数据。这可以保证您的应用程序的安全。
整个代码可以看作是一个胶囊,你只能通过消息进行通信。因此得名封装。
数据隐藏 Java
数据隐藏 Java 隐藏类的变量,使其不被其他类看到。只能通过当前类的方法访问。它向用户隐藏了实现细节。但除了数据隐藏之外,它还旨在更好地管理或分组相关数据。为了在实现较小程度的封装中 Java,可以使用“protected”或“public”等修饰符。通过封装,开发人员可以轻松更改代码的一部分,而不会影响其他部分。
Getter 和 Setter Java
Getter 和 Setter Java 是两种用于检索和更新变量值的常规方法。它们主要用于创建、修改、删除和查看变量值。setter 方法用于更新值,getter 方法用于读取或检索值。它们也称为访问器和修改器。
下面的代码是 getter 和 setter 方法的示例:
class Account{ private int account_number; private int account_balance; // getter method public int getBalance() { return this.account_balance; } // setter method public void setNumber(int num) { this.account_number = num; } }
在上面的例子中,getBalance() 方法是读取变量 account_balance 值的 getter 方法,而 setNumber() 方法是设置或更新变量 account_number 值的 setter 方法。
抽象与封装
封装常常被误解为 抽象化。 来学习吧-
- 封装更多的是关于“如何”实现功能
- 抽象更多的是关于一个类可以做什么。
举个简单的例子来理解这种差异,手机就是一个例子。其中电路板中的复杂逻辑被封装在触摸屏中,并提供接口将其抽象出来。
封装的优点 Java
- 封装是将数据与其相关功能绑定在一起。这里的功能是指“方法”,数据是指“变量”
- 因此我们将变量和方法放在一个地方。那个地方就是“类”。类是封装的基础。
- 通过 Java 封装,你可以隐藏(限制访问)代码中的关键数据成员,从而提高安全性
- 正如我们前面所讨论的,如果数据成员被声明为“private”,那么它只能在同一个类内访问。外部类不能访问其他类的数据成员(变量)。
- 但是,如果您需要访问这些变量,则必须使用 公共“getter”和“setter” 方法。