父类的私有成员用作公共成员函数的参数

时间:2017-04-28 00:23:05

标签: java oop inheritance

如果我有以下继承关系。

class product {
  product(int param) {};
  ...
}

class parent {
  private int secret;
  ...
  parent() {
    secret = 5; //for example; in real world it is set by complicated computation. 
  }
  public create() {
    return new product(secret);
  }
}

现在我需要扩展父类,如

class childProdcut {
  childProdcut(int param) {};
  ...
}

class child extends parent {
  child() {
    super();  
  }

  @Override
  public public create() {
    return new childProdcut(secret);
  }
}

现在它出现问题 秘密是私有的,所以我无法在孩子中访问它。

我通过秘密保护 解决了这个问题

class parent {
  protected int secret;

但我认为有一种优雅的方式可以做到。

有谁知道?

感谢。

1 个答案:

答案 0 :(得分:1)

  

但是我认为有一种优雅的方式可以做到这一点。   有人知道吗?

如果您需要从子实现中访问父成员,那么使该成员受到 IS 的保护是优雅的方式。

让会员私密是为了避免与包括儿童在内的世界分享。保护它是为了避免与世界分享,但与孩子分享(也就是把它留在家里)。将其公之于众,就是与世界分享。

您可能会使用getter(受保护的getter或public)公开父成员,具体取决于您的秘密的秘密程度,以及您是否要将父级成员与子级&#39脱钩;成员。

但是,通过使其成为受保护的成员来访问该成员是完全正常的,正确的,优雅的。