如果我有以下继承关系。
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;
但我认为有一种优雅的方式可以做到。
有谁知道?
感谢。
答案 0 :(得分:1)
但是我认为有一种优雅的方式可以做到这一点。 有人知道吗?
如果您需要从子实现中访问父成员,那么使该成员受到 IS 的保护是优雅的方式。
让会员私密是为了避免与包括儿童在内的世界分享。保护它是为了避免与世界分享,但与孩子分享(也就是把它留在家里)。将其公之于众,就是与世界分享。
您可能会使用getter(受保护的getter或public)公开父成员,具体取决于您的秘密的秘密程度,以及您是否要将父级成员与子级&#39脱钩;成员。
但是,通过使其成为受保护的成员来访问该成员是完全正常的,正确的,优雅的。