可能的重复:
为什么要使用 getter 和 setter?
在类中创建方法来访问私有变量而不是使变量成为公共变量有什么好处吗?
例如,第二种情况比第一种情况更好吗?
//Case 1
public class Shoe{
public int size;
}
//Case 2
public class Shoe{
private int size;
public int getSize(){
return size;
}
public void setSize(int sz){
size = sz;
}
}
我有一天在 SO 上看到的,作为答案(由 @ChssPly76 编写)为什么要使用 getter 和 setter
因为从现在起两周(几个月、几年)之后,当您意识到您的
setter 需要做的不仅仅是设置值,你还会意识到
该属性已直接在 238 个其他类中使用:-)
还有更多优点:
- getter 和 setter可以进行验证在其中,字段不能
- 使用吸气剂你可以获取子类通缉班的。
- getter 和 setter是多态的, 字段不是
-
调试可以简单得多,因为断点可以放置在一个方法内,而不是靠近该给定字段的许多引用。
- 他们能隐藏实施变更:
before:
private boolean alive = true;
public boolean isAlive() { return alive; }
public void setAlive(boolean alive) { this.alive = alive; }
after:
private int hp; // change!
public boolean isAlive() { return hp > 0; } // old signature
//method looks the same, no change in client code
public void setAlive(boolean alive) { this.hp = alive ? 100 : 0; }
EDIT:使用 Eclipse 时的另一个新优势 - 您可以在现场创建观察点,但如果您有 setter,则只需要一个断点,并且...断点(例如在 setter 方法中)可以是有条件的,观察点(现场)不能。因此,如果您只想停止调试器x=10
您只能在设置器内使用断点来做到这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)