封装在 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)存入您的银行账户。

封装在 Java

现在的问题是—— 那可能吗? 让我们来研究一下。通常,类中的变量被设置为“私有”,如下所示。它只能通过类中定义的方法访问。其他类或对象都无法访问它们。

封装在 Java

如果数据成员是私有的,则意味着它只能在同一个类内访问。外部类不能访问其他类的私有数据成员或变量。因此,在我们的案例中,黑客无法将金额 -100 存入您的账户。

封装在 Java

接近2:黑客第一次尝试存入金额失败。接下来,他尝试使用“存款”方法存入金额 -100。

封装在 Java

但是方法实现中对负值进行了检查。因此第二种方法也失败了。

封装在 Java

因此,您永远不会向外部方泄露您的数据。这可以保证您的应用程序的安全。

封装在 Java

整个代码可以看作是一个胶囊,你只能通过消息进行通信。因此得名封装。

数据隐藏 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” 方法。