“深入浅出:为何在编程中使用Getter和Setter方法而非Public字段

在编写代码的时候,我们经常面临一个选择:是直接使用public字段,还是通过getter和setter方法来访问类的属性。这个问题看似简单,却隐藏着编程世界深深的智慧。今天,就让我们一起探索为什么在很多情况下,选择使用getter和setter方法会是一个更明智的决定。

举个简单的例子,假设我们有一个学生类,其中有一个字段用来存储学生的名字:

public class Student {
    public String name;
}

在上面的代码中,name字段被标记为public,这意味着任何人都可以直接访问和修改这个字段。乍一看,这似乎非常方便。但是,想象一下如果后来我们想要在设置学生名字的时候,加上一些逻辑,比如验证名字是否为空,或者是否过长。如果我们直接暴露了name字段,那么修改这部分逻辑就会变得非常麻烦,因为所有直接访问name字段的代码都需要被找出来并修改。

这时,使用getter和setter就展现出了它的优势:

public class Student {
    private String name; // 将字段设为私有

    // 提供一个public的方法来设置name,这样我们就可以在这里加入逻辑
    public void setName(String name) {
        if(name == null || name.isEmpty()) {
            throw new IllegalArgumentException("名字不能为空");
        }
        if(name.length() > 100) {
            throw new IllegalArgumentException("名字过长");
        }
        this.name = name;
    }

    // 提供一个public的方法来获取name
    public String getName() {
        return name;
    }
}

在这个改进后的版本中,我们将name字段设为了private,这意味着外部代码不能再直接访问它。相反,我们提供了setNamegetName方法。这样,我们就可以在setName方法中加入任何逻辑,比如验证名字是否合法,而不用担心会破坏其他依赖于这个字段的代码。如果将来我们想要修改这部分逻辑,只需要修改setName方法就可以了。

除了提供验证的功能之外,使用getter和setter还有其他几个优点:

  • 封装性:我们可以隐藏内部的实现细节,只暴露必要的接口给外部使用。
  • 灵活性:如果将来类的内部结构发生变化,我们可以不改变getter和setter的签名,就能实现功能的更新,这对于保持代码的稳定性非常重要。
  • 控制:我们可以控制字段的读写权限,比如只提供getter而不提供setter,就可以使得字段只读。

总之,虽然使用getter和setter方法看起来比直接访问public字段需要写更多的代码,但它们提供的好处远远超过了这点小小的不便。通过使用getter和setter,我们的代码会更加健壯、灵活,而且易于维护。所以,下次当你在考虑是否要为你的字段直接提供public访问权限时,不妨再想一想,使用getter和setter可能会是一个更好的选择哦!

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值