读书笔记-重构-self encapulicate field(自封装属性)

类的属性不能给直接给外部调用,这么做会增加他们之间的耦合度。而是提供给外部调用的接口。

private int high;

int compute() {

return high*high;

}

graphics/arrow.gif

private int high;

int compute() {

return getHigh();

}

public int getHigh(){

return hight;

}

public int setHigh(int high){

this.high = high;

}


具体例子:

class IntRange {
 
    boolean includes (int arg) {
        return arg >= getLow() && arg <= getHigh();
    }
 
    void grow(int factor) {
        setHigh (getHigh() * factor);
    }
 
    private int _low, _high;
 
    int getLow() {
        return _low;
    }
 
    int getHigh() {
        return _high;
    }
 
    void setLow(int arg) {
        _low = arg;
    }
 
    void setHigh(int arg) {
        _high = arg;
    }

一般情况下。这种做法用途并不大,但是当为他创建子类的时候,就显得非常有用。

class CappedRange extends IntRange {
    CappedRange (int low, int high, int cap) {
        super (low, high);
        _cap = cap;
    }
 
    private int _cap;
 
    int getCap() {
        return _cap;
    }
 
    int getHigh() {
        return Math.min(super.getHigh(), getCap());
    }
   }

这么做,最直观的好处就是,子类可以间接调用父类的属性进行任何操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值