Java中的封装(Encapsulation)是一种面向对象编程(OOP)中常见的原则之一,它是OOP中三大特征(封装、继承和多态)之一。
封装是指将一个对象的属性和方法进行私有化,使其不被外部直接访问和修改。目的在于隐藏对象的具体实现细节,增加代码的可读性、可维护性和安全性。在Java中,使用关键字private来实现封装。
下面以一个银行账户类Account为例进行说明:
public class Account {
private String accountNum; //账号
private String name; //姓名
private double balance; //余额
public Account(String accountNum, String name, double balance) {
this.accountNum = accountNum;
this.name = name;
this.balance = balance;
}
//获取账号
public String getAccountNum() {
return accountNum;
}
//获取姓名
public String getName() {
return name;
}
//获取余额
public double getBalance() {
return balance;
}
//存款
public void deposit(double amount) {
balance += amount;
}
//取款
public void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
} else {
System.out.println("余额不足!");
}
}
}
在这个类中,将所有的属性都设置为private,外部无法直接访问和修改,但是提供了一些public的方法来获取和修改这些属性,如getAccountNum、getName、getBalance、deposit和withdraw等方法。
使用这个类的示例代码如下:
public class TestAccount {
public static void main(String[] args) {
//创建账户对象
Account account = new Account("123456", "张三", 1000.0);
//获取账号、姓名和余额
System.out.println("账号:" + account.getAccountNum());
System.out.println("姓名:" + account.getName());
System.out.println("余额:" + account.getBalance());
//存款、取款
account.deposit(500.0);
account.withdraw(2000.0);
account.withdraw(800.0);
//输出取款后的余额
System.out.println("余额:" + account.getBalance());
}
}
在这个示例中,使用Account类来创建一个账户对象,并通过public的方法来获取和修改账户的属性,如获取账号、姓名和余额,存款和取款。这些操作都是通过public的方法来实现的,而属性本身是封装在类的内部的,不可直接访问和修改。
除了设置属性的访问权限以外,Java中还可以使用getter和setter方法来实现对属性的访问和修改,这样也是一种封装的方式。例如,在Account类中可添加以下方法:
//设置账号
public void setAccountNum(String accountNum) {
this.accountNum = accountNum;
}
//设置姓名
public void setName(String name) {
this.name = name;
}
//设置余额
public void setBalance(double balance) {
this.balance = balance;
}
这样,可以通过setter方法来修改属性值,例如:
account.setAccountNum("654321");
account.setName("李四");
account.setBalance(2000.0);
总之,封装是OOP中一种重要的原则,可以提高代码的可读性、可维护性和安全性,令代码更加健壮、易于扩展。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的封装是什么? - Python技术站