在(私有)本地类中是否有使用私有属性并且有get(),set()方法?
class a{
private class b {
private int att;
public int getAtt(){
return att;
}
public setAtt(int att){
this.att = att;
}
}
}
VS
class a{
private class b {
public int att;
}
}
对我而言,所有属性都应该是公开的,因为它们只在外层使用?
答案 0 :(得分:4)
这是工厂的常见模式。内部私有类实现了一个公共接口。
public interface IB {
public int getAtt();
public void setAtt(int att);
}
static class BFactory {
public IB makeOne() {
return new B();
}
private class B implements IB {
private int att;
public int getAtt() {
return att;
}
public void setAtt(int att) {
this.att = att;
}
}
}
答案 1 :(得分:0)
我想这在很大程度上取决于你想如何使用内部类。如果它只是外部类访问的容器,则可以将属性保持公共状态并避免使用getter / setter。内部类的私有属性对于仅由内部类中的方法使用的属性仍然有用。
答案 2 :(得分:0)
此外,如果您使用getter和setter方法公开它们,隐藏内部表示可能很重要。
现在att
是一个属性,但想象明天它将是一个计算字段。您不需要更改外部类,只需要更改setter和getter方法的实现。
此外,在setter方法中,您可以在设置att
之前验证参数。
答案 3 :(得分:0)
如果您想访问周围类中的字段,则不必使用getter和setter。
如果你想限制周围班级的访问,那么拥有getter和setter显然是有意义的。
答案 4 :(得分:0)
它表示封装。 att受b保护,b隐藏如何设置或获取att.b的细节只为外部提供方法。