本地类中的私有属性

时间:2015-11-27 09:09:48

标签: java

在(私有)本地类中是否有使用私有属性并且有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;
     }
 }

对我而言,所有属性都应该是公开的,因为它们只在外层使用?

5 个答案:

答案 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的细节只为外部提供方法。