zvvq技术分享网

面向对象编程 ||封装(面向对象方法中最基本的

作者:zvvq博客网
导读众所周知,封装是 OOPS 的 4 大支柱之一,我们可以使用它来隐藏数据,并添加一些限制来对我们想要确保封装的类的实例变量执行操作。做得很完美。 一般来说,我们被告知必须隐藏变

内容来自samhan

众所周知,封装是 OOPS 的 4 大支柱之一,我们可以使用它来隐藏数据,并添加一些限制来对我们想要确保封装的类的实例变量执行操作。做得很完美。 内容来自zvvq

一般来说,我们被告知必须隐藏变量,以便除了定义该变量的类之外没有人可以更改它。因此,为了在类外部访问此变量(如果需要),我们定义 getter 和 setter 方法,以便我们可以执行与该实例 vairbale 相关的必要操作。 内容来自samhan666

参考下面的Java示例代码::

内容来自zvvq

1 内容来自zvvq,别采集哟

2 内容来自samhan666

3 内容来自samhan

4 zvvq

5 内容来自samhan

6

本文来自zvvq

7

zvvq

8

内容来自samhan666

9 zvvq

10

zvvq好,好zvvq

11 zvvq好,好zvvq

12

zvvq.cn

13

内容来自samhan

14

copyright zvvq

15

本文来自zvvq

16 内容来自samhan666

17

内容来自samhan666

18

copyright zvvq

19 本文来自zvvq

20 copyright zvvq

21 copyright zvvq

22

zvvq

23

本文来自zvvq

24

copyright zvvq

25

本文来自zvvq

26 本文来自zvvq

27 zvvq

28 copyright zvvq

29

zvvq好,好zvvq

30 copyright zvvq

31

zvvq.cn

32

zvvq好,好zvvq

33

zvvq好,好zvvq

34 内容来自samhan

35 zvvq好,好zvvq

36 内容来自samhan666

37

zvvq.cn

38

本文来自zvvq

39

zvvq好,好zvvq

40

内容来自samhan

41 内容来自samhan666

42 内容来自samhan666

43 zvvq

44

zvvq.cn

45

本文来自zvvq

46 内容来自samhan666

47

内容来自samhan

48 内容来自zvvq

49

内容来自samhan

50 内容来自samhan666

51 zvvq

52

zvvq好,好zvvq

53

zvvq

54

本文来自zvvq

55 内容来自zvvq,别采集哟

56

copyright zvvq

57

zvvq

// 银行账户持有人的类 zvvq.cn

公共类 BankAccountHolder {

本文来自zvvq

// 存储账户信息的私有字段

copyright zvvq

私有字符串帐号;

本文来自zvvq

私有字符串帐户持有者名称;

copyright zvvq

私人双重余额;

本文来自zvvq

// 用于初始化新 BankAccount 的公共构造函数

zvvq好,好zvvq

公共BankAccount(字符串accountNumber,字符串accountHolderName,双initialBalance)抛出异常{ zvvq好,好zvvq

setAccountNumber(帐号); copyright zvvq

setAccountHolderName(accountHolderName);

本文来自zvvq

设置余额(初始余额);

内容来自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()) {

zvvq好,好zvvq

this. 帐号 = 帐号; 本文来自zvvq

} 别的 {

copyright zvvq

throw new Exception("账号无效。");

内容来自zvvq

} zvvq.cn

}

zvvq.cn

// accountHolderName 的公共 getter

内容来自samhan666

公共字符串 getAccountHolderName() {

本文来自zvvq

返回账户持有者姓名;

zvvq.cn

}

zvvq好,好zvvq

// accountHolderName 的公共设置器 zvvq.cn

公共无效setAccountHolderName(字符串accountHolderName)抛出异常{

本文来自zvvq

if (accountHolderName != null && !accountHolderName.isEmpty()) { copyright zvvq

this.accountHolderName = accountHolderName;

copyright zvvq

} 别的 {

内容来自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

} 别的 { copyright zvvq

throw new Exception("初始余额无效。"); copyright zvvq

}

内容来自samhan666

} 内容来自samhan

} zvvq好,好zvvq

在上面的示例中,我们有 3 个变量accountNumber、accountHolderName、balance 作为私有方法,并且我们为这 3 个变量中的每一个定义了 getter 和 setter,以便如果使用其他类想要使用实例变量,他们可以轻松地使用实例变量使用.

内容来自samhan

但这还不是全部,假设我们还需要另外 2 种方法,以便我们可以从该帐户存款和取款。

zvvq好,好zvvq

请注意,这里我们不讨论应用程序级别的安全性,我们假设我们的团队已经完成了完美的工作来授权用户。

内容来自zvvq,别采集哟

因此,使用新的两种方法,在执行提取和存入金额的工作时,我们将尽量避免直接调用实例变量“balance”。为此,我们使用 setter 方法更新它,因为 setter 方法确保如果实例变量违反任何规则,它将引发异常。 copyright zvvq

以下是存款和取款方法代码,我们将在 BankAccountHolder 类中添加。

内容来自zvvq,别采集哟

1 内容来自samhan

2

内容来自samhan

3

zvvq好,好zvvq

4 内容来自zvvq

5

zvvq

6

zvvq.cn

7

内容来自zvvq,别采集哟

8 内容来自samhan666

9

内容来自zvvq

10 zvvq.cn

11 zvvq.cn

12 内容来自samhan666

13

zvvq

14 zvvq好,好zvvq

15

本文来自zvvq

16 zvvq

17

内容来自zvvq,别采集哟

18

内容来自zvvq

19 内容来自zvvq

20 zvvq好,好zvvq

21

zvvq好,好zvvq

22 内容来自zvvq

23

copyright zvvq

公共无效存款(双倍金额)抛出异常 {

本文来自zvvq

如果(金额 > 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.cn

以上就是面向对象编程 ||封装的详细内容,更多请关注其它相关文章!

本文来自zvvq