繁体   English   中英

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

[英]Private member of parent class is used as a public member function's parameter

如果我有以下继承关系。

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 childProduct {
  childProduct(int param) {};
  ...
}

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

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

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

通过设置 secret protected解决了这个问题。

class parent {
  protected int secret;

但是我认为有一种优雅的方法可以做到这一点。

有谁知道?

谢谢。

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

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

将成员设为私有是为了避免与世界共享,包括儿童。 保护它是为了避免与世界分享它,而是与孩子分享它(也就是将它留在家庭中)。 公开,就是与世界分享。

您可以使用受保护的 getter 或公开的 getter 公开父成员的成员,具体取决于您的秘密的秘密程度,以及您是否希望将父成员与子成员的成员分离。

但是通过保护它来访问父成员的成员是非常好的,正确的,优雅的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM