您的位置:首页 > Web前端

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

2017-08-01 16:02 330 查看
在类中添加成员变量的时候,应该设置成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;
}
}

直接使用公有域无法实现以上条件.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐