gpt4 book ai didi

java - protected 方法与 protected 属性

转载 作者:行者123 更新时间:2023-12-01 19:36:41 30 4
gpt4 key购买 nike

子类需要能够使用种子随机数生成器。

使用的优点和缺点是什么

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;
}
}

最佳答案

protected 成员是公共(public) API 的一部分。也就是说,它们对于稍后(可能是几年后)出现并编写子类的开发人员是完全可见的。他们甚至可以重写这些方法并使其公开(可见性扩大有效,可见性缩小无效)。

因此,应避免使用 protected 字段,其方式与避免 public 字段的方式大致相同:它们禁止将来更改类不变量或行为的扩展。

例如,如果您需要延迟实例化或返回线程本地对象怎么办?对于 protected 字段,这一切都是不可能的。尽管[需要引用],但 protected 字段是否是最佳解决方案仍存在争议。

(Effective Java,第 13 和 17 项)

关于java - protected 方法与 protected 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59211095/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com