类的属性不能给直接给外部调用,这么做会增加他们之间的耦合度。而是提供给外部调用的接口。
private int high;
int compute() {
return high*high;
}
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());
}
}
这么做,最直观的好处就是,子类可以间接调用父类的属性进行任何操作。