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