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金额。让我们看看他的第一种方法或途径。
方法一:他试图通过操纵代码向您的银行账户存入无效金额(例如-100)。
那么,问题来了——这可能吗?让我们来调查一下。通常,类中的变量会设置为“private”,如下所示。它们只能通过类中定义的方法访问。任何其他类或对象都无法访问它们。
如果数据成员是私有的,这意味着它只能在同一类中访问。外部类无法访问私有数据成员或其他类的变量。所以,在我们的例子中,黑客无法向您的账户存入-100金额。
方法二:黑客的第一种方法未能存入金额。接下来,他试图使用“deposit”方法存入-100金额。
但是方法实现中有对负值的检查。所以第二种方法也失败了。
这样,您就永远不会将数据暴露给外部方。这使得您的应用程序更安全。
整个代码可以看作一个胶囊,您只能通过消息进行通信。因此得名封装。
Java中的数据隐藏
Java中的数据隐藏是指隐藏类的变量不被其他类访问。它只能通过其当前类的方法来访问。它隐藏了用户实现细节。但它不仅仅是为了数据隐藏,更是为了更好地管理或组合相关数据。要实现较低程度的Java封装,可以使用“protected”或“public”等修饰符。通过封装,开发人员可以轻松地更改代码的一部分,而不会影响其他部分。
Java中的Getter和Setter
Java中的Getter和Setter是用于检索和更新变量值的两个常规方法。它们主要用于创建、修改、删除和查看变量值。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()方法是getter方法,用于读取account_balance变量的值;setNumber()方法是setter方法,用于为account_number变量设置或更新值。
抽象与封装
通常,封装与抽象混淆。让我们来学习一下:
- 封装更多的是关于“如何”实现功能
- 抽象更多的是关于“什么”类可以做什么。
一个理解这种区别的简单例子是手机。电路板中的复杂逻辑被封装在触摸屏中,并通过界面对其进行抽象。
Java中封装的优点
- 封装是将数据与其相关功能绑定在一起。这里的功能是指“方法”,数据是指“变量”。
- 所以我们将变量和方法放在一个地方。那个地方是“类”。类是封装的基础。
- 通过Java封装,您可以隐藏(限制访问)代码中的关键数据成员,从而提高安全性。
- 正如我们前面讨论过的,如果一个数据成员被声明为“private”,那么它只能在同一类中访问。外部类无法访问其他类的数据成员(变量)。
- 但是,如果您需要访问这些变量,您必须使用public的“getter”和“setter”方法。