簡體   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