第十四条建议:使类和成员变量的可访问性降到最低

一、什么叫做可访问性

可访问性指的是:你的类的成员变量,在什么情况下能被其他类访问。
我们都知道:java的修饰符:public 、protected、default、private。作用就不介绍了,可访问性依次降低。

二、如何降低可访问性

规则①、尽可能不让每个类或者成员变量被外界访问。(只要能弄成private,就不要弄成private以上的修饰符)
也就是说:最好把每个成员变量弄成private 标识符。不能被其他类得到。
设置的优点:因为这可以表示这是类内部的一部分,而不是类放出去的API的一部分。如果以后要修改的话,只需要API不变返回类型不变,成员变量是可以随意改变的。
不设置的缺点:
如果将可访问类型弄的非常高,以后就必须维护该成员变量(使其必须存在,如果直接删除会造成很多问题)。还有就是无法保证线程的安全,因为任何类都都可以修改该成员变量的值,无法实施同步。
注:所以如果发现用太多的可访问性高的修饰符说明需要对代码进行重构了。

规则②:非final的成员变量都不可是公有的(包括实例域和静态域)。
原因:非final的成员变量,都可以直接被其他类修改。
示例:
private String name = "Rookie"  //不能设置成公有的
public static final String TAG = "Advice" //可以设置成公有的

规则③:final指向一个可变对象,也是不可用设置为公有的
原因:因为可变对象设置成final没有一样,也是可以被修改的
示例:(不恰当的例子)
public String work = "homework";
public static final String  do = work;
只要work被其他类修改了,do也一并会被修改。
所以都应该弄成private。
private String work = "homework"
private static final String do = work;

规则④:数组不能设置成公有的
原因:数组的内部存放的参数是可以被修改的。
示例:
在Text.java类中
public static final String[] data = {"asd","zxc","ghj"};
然后我用其他类调用
Text.data[1] = "哈哈";//data的数据就被修改为{"asd","哈哈","ghj"};
解决办法:让数组变成不可修改的变量
private String [] data = {"asd","zxc","ghj"};
public static final List<String>  DATA = Collections.unmodifiableList(ArraysList.asList(data));




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值