[英]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.