2015070702 - EffactiveJava笔记 - 第14条 共有类使用访问方法而非共有属性

   20150707 星期二  北京

   对于可变类来说,应用私有属性和公有set和get方法.从而保持封装数据.

   如果类在它所在的包的外部进行访问,那么提供访问方法,以保留将来改变该类的内部表示法的灵活性.

   如果共有类暴露它的属性,要想将来改变其内部表示法是不可能的,因为共有类的客户端代码已经遍布各处.然而如果类是包级私有,或者是内部类,直接暴露它的属性并没有本质上的错误.为什么呢?此类的代码注定包含在该类的包中,无法对包外的客户端造成影响;内部类改变的作用范围进一步压缩到类的内部,对类的外部没影响.

   如果共有类的属性是不可变的,危害性相对小点.可以在构造方法中对数据的有效性进行限制,同时增加约束条件,比如给每个实例增加有效时间.

   共有类永远不应该暴露可变的属性,让其暴露不可变属性危害小点.有时需要使用包级私有和内部类修饰属性,无论其可变还是不可变.

   {你如何使用上面的知识呢?

   1.共有类的属性进行私有化,然后提供共有的访问方法

   2.类的访问级别设置为包级或者内部类!}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值