子类必须能够使用种子随机数生成器。
使用的优缺点
public abstract class AbstractClass {
protected Random rnd;
public AbstractClass(long seed) {
rnd = new Random(seed);
}
}
与
public abstract class AbstractClass {
private Random rnd;
public AbstractClass(long seed) {
rnd = new Random(seed);
}
protected Random getRnd() {
return rnd;
}
protected Random setRnd(Random rnd) {
this.rnd = rnd;
}
}
答案 0 :(得分:0)
protected
成员是 public API的一部分。也就是说,它们对于后来出现(可能是几年后)并编写子类的开发人员是完全可见的。他们甚至可以覆盖方法并将其设置为public
(可见性扩大有效,可见性缩小则无效)。
因此,应该像避免protected
字段一样避免使用public
字段:它们禁止将来的扩展更改类不变性或行为。
例如,如果您需要返回惰性实例化或线程本地对象该怎么办?对于protected
字段,这是不可能的。尽管 [需要引用] ,但是受保护的字段是否是最佳解决方案仍有待商bat。
(有效的Java,第13和17项)