【学习日记】深入理解 Java 封装中的 private 与 get、set 方法

封装是面向对象编程的三大特性之一

为什么需要封装?

它把类的内部数据结构和业务逻辑 “封装” 起来,防止外部代码随意篡改,提升代码安全性;同时降低不同模块间的耦合度,一处代码修改,不至于牵一发而动全身,让代码维护与拓展都更加轻松。

private 关键字:

在 Java 中,private 是访问修饰符,用于限制成员变量和方法只能在所属类内部被访问。示例如下:

public class Phone {
    private double price;

    public Phone(double p) {
        this.price = p;
    }
}

上述代码定义了 Phone 类,其中 price 变量被设为 private。这意味着除了 Phonet 类自身的方法,其他类无法直接访问 price,像这样的代码就是非法的:

public class Main {
    public static void main(String[] args) {
        BankAccount myAccount = new BankAccount(1000.0);
        // 错误示范,无法访问私有成员
        System.out.println(myAccount.balance); 
    }
}

编译器会报错,阻止这种越界访问,从而保护数据完整性。设想没有 private 修饰,任何外部类都能肆意修改,安全性荡然无存。

get、set 方法:受控的数据通道

private 把数据捂得太严实,外部代码完全无法操作也不行,这时 get、set 方法就登场了。get 方法用于获取私有成员变量的值,set 方法则用来设置其值,遵循命名规范,一般 get 后接成员变量名(首字母大写),set 同理。

public class BankAccount {
    private double balance;

    public BankAccount(double initialBalance) {
        this.balance = initialBalance;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double newBalance) {
        if (newBalance >= 0) {
            this.balance = newBalance;
        }
    }
}

这里的 getBalance 让外部能安全获取账户余额,setBalance 方法额外加了条件判断,确保余额不能被设为负数,维持业务合理性。外部代码使用起来就很清晰:

public class Main {
    public static void main(String[] args) {
        BankAccount myAccount = new BankAccount(1000.0);
        System.out.println("当前余额: " + myAccount.getBalance());
        myAccount.setBalance(1500.0);
        System.out.println("更新后余额: " + myAccount.getBalance());
    }
}

总结:

  1. private 关键字:作为访问修饰符,它限定成员变量与方法仅能在所属类内部访问,防止外部随意篡改数据,维持数据完整性,违规访问会触发编译器报错。
  2. get、set 方法:用于突破 private 的限制,安全地与私有成员交互。get 方法负责取值,set 方法用于赋值,还能按需添加校验逻辑,控制数据的合法范围。
  3. 封装的意义:封装旨在隐藏类的内部细节,提升代码安全性,降低模块间耦合度,利于代码维护与拓展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值