一分钟简单了解Effective java - 第14条 在共有类中使用访问方法而非公有域

  在类中添加成员变量的时候,应该设置成private,不能将其直接暴露在外部,另外使用get和set方法对该数据域进行操作,这样体现了面向对象的封装性

①直接使用public的数据域和为private的数据域添加上public 的get和set方法,这两种情况对于外部的使用看起来是一致的,实则有很大隐患,比如如果数据域只想提供给外部获取数据的方法而不提供设置数据的方法,此时即可将数据域设置成private,并添加public的get方法

②在实体类中只有数据域的get方法和set方法,换成更复杂的类和方法.如果要修改内部逻辑,外部无需关注内部的逻辑变化,依然调用原接口进行调用.

③get和set中可以加入操作,比如set方法中加入null判断

public class Time {

    private static final int HOURS_PER_DAY = 24;
    private static final int MINUTES_PER_HOUR = 60;

    public final int hour;
    public final int minute;

    public Time(int hour, int minute){
        if(hour < 0 || hour >= HOURS_PER_DAY){
            throw new IllegalArgumentException("Hour:" + hour);
        }
        if(minute < 0 || minute >= MINUTES_PER_HOUR){
            throw new IllegalArgumentException("Min:" + minute);
        }
        this.minute = minute;
        this.hour = hour;
    }
}

直接使用公有域无法实现以上条件.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值