内容来自samhan
众所周知,封装是 OOPS 的 4 大支柱之一,我们可以使用它来隐藏数据,并添加一些限制来对我们想要确保封装的类的实例变量执行操作。做得很完美。 内容来自zvvq
一般来说,我们被告知必须隐藏变量,以便除了定义该变量的类之外没有人可以更改它。因此,为了在类外部访问此变量(如果需要),我们定义 getter 和 setter 方法,以便我们可以执行与该实例 vairbale 相关的必要操作。 内容来自samhan666
参考下面的Java示例代码::
1 内容来自zvvq,别采集哟
2 内容来自samhan666
3 内容来自samhan
4 zvvq
5 内容来自samhan
6
7
8
内容来自samhan666
9 zvvq
10
11 zvvq好,好zvvq
12
zvvq.cn
13
14
copyright zvvq
15
16 内容来自samhan666
17
18
19 本文来自zvvq
20 copyright zvvq
21 copyright zvvq
22
23
24
copyright zvvq
25
本文来自zvvq
26 本文来自zvvq
27 zvvq
28 copyright zvvq
29
zvvq好,好zvvq
30 copyright zvvq
31
32
33
34 内容来自samhan
35 zvvq好,好zvvq
36 内容来自samhan666
37
38
本文来自zvvq
39
40
41 内容来自samhan666
42 内容来自samhan666
43 zvvq
44
zvvq.cn
45
本文来自zvvq
46 内容来自samhan666
47
48 内容来自zvvq
49
内容来自samhan
50 内容来自samhan666
51 zvvq
52
53
54
本文来自zvvq
55 内容来自zvvq,别采集哟
56
57
// 银行账户持有人的类 zvvq.cn
公共类 BankAccountHolder {
本文来自zvvq
// 存储账户信息的私有字段
copyright zvvq
私有字符串帐号;
私有字符串帐户持有者名称;
私人双重余额;
本文来自zvvq
// 用于初始化新 BankAccount 的公共构造函数
zvvq好,好zvvq
公共BankAccount(字符串accountNumber,字符串accountHolderName,双initialBalance)抛出异常{ zvvq好,好zvvq
setAccountNumber(帐号); copyright zvvq
setAccountHolderName(accountHolderName);
设置余额(初始余额);
内容来自zvvq
} 本文来自zvvq
// accountNumber 的公共 getter zvvq好,好zvvq
公共字符串 getAccountNumber() { 内容来自zvvq,别采集哟
返回帐号; 内容来自zvvq,别采集哟
}
zvvq.cn
// accountNumber 的私有设置器
本文来自zvvq
private void setAccountNumber(String accountNumber) 抛出异常 {
copyright zvvq
if (accountNumber != null && !accountNumber.isEmpty()) {
this. 帐号 = 帐号; 本文来自zvvq
} 别的 {
copyright zvvq
throw new Exception("账号无效。");
} zvvq.cn
}
zvvq.cn
// accountHolderName 的公共 getter
内容来自samhan666
公共字符串 getAccountHolderName() {
返回账户持有者姓名;
}
zvvq好,好zvvq
// accountHolderName 的公共设置器 zvvq.cn
公共无效setAccountHolderName(字符串accountHolderName)抛出异常{
本文来自zvvq
if (accountHolderName != null && !accountHolderName.isEmpty()) { copyright zvvq
this.accountHolderName = accountHolderName;
} 别的 {
内容来自zvvq,别采集哟
throw new Exception("账户持有人姓名无效。");
内容来自samhan
}
zvvq
}
内容来自samhan666
// 用于平衡的公共 getter 本文来自zvvq
公共双 getBalance() { zvvq.cn
返回余额; zvvq.cn
}
本文来自zvvq
// 用于平衡的私有设置器
内容来自samhan666
私人无效setBalance(双平衡)抛出异常{ zvvq
如果(余额 >= 0){
zvvq好,好zvvq
this.balance = 余额;
} 别的 { copyright zvvq
throw new Exception("初始余额无效。"); copyright zvvq
}
} 内容来自samhan
} zvvq好,好zvvq
在上面的示例中,我们有 3 个变量accountNumber、accountHolderName、balance 作为私有方法,并且我们为这 3 个变量中的每一个定义了 getter 和 setter,以便如果使用其他类想要使用实例变量,他们可以轻松地使用实例变量使用.
内容来自samhan
但这还不是全部,假设我们还需要另外 2 种方法,以便我们可以从该帐户存款和取款。
zvvq好,好zvvq
请注意,这里我们不讨论应用程序级别的安全性,我们假设我们的团队已经完成了完美的工作来授权用户。
内容来自zvvq,别采集哟
因此,使用新的两种方法,在执行提取和存入金额的工作时,我们将尽量避免直接调用实例变量“balance”。为此,我们使用 setter 方法更新它,因为 setter 方法确保如果实例变量违反任何规则,它将引发异常。 copyright zvvq
以下是存款和取款方法代码,我们将在 BankAccountHolder 类中添加。
1 内容来自samhan
2
内容来自samhan
3
4 内容来自zvvq
5
zvvq
6
7
8 内容来自samhan666
9
10 zvvq.cn
11 zvvq.cn
12 内容来自samhan666
13
zvvq
14 zvvq好,好zvvq
15
本文来自zvvq
16 zvvq
17
18
19 内容来自zvvq
20 zvvq好,好zvvq
21
22 内容来自zvvq
23
公共无效存款(双倍金额)抛出异常 {
如果(金额 > 0) 内容来自samhan
int FinalBalance = this.getBalance() + 金额; zvvq
设置余额(最终余额); zvvq.cn
} 别的 { 内容来自samhan
throw new Exception("存款金额必须为正数。"); 内容来自samhan
} zvvq.cn
} zvvq好,好zvvq
// 从账户中提取金额的公共方法 内容来自zvvq,别采集哟
公共无效提款(双倍金额)抛出异常{ zvvq.cn
if (金额 > 0 && 金额 内容来自samhan666
<p><strong>总结:我们会尽量避免直接在类中调用实例变量,以满足代码内部的安全标准。</strong></p>
以上就是面向对象编程 ||封装的详细内容,更多请关注其它相关文章!
本文来自zvvq