提问人:joel 提问时间:5/18/2020 最后编辑:joel 更新时间:5/21/2020 访问量:146
受保护的成员是公共 API 的一部分吗?
Are protected members part of the public API?
问:
由于受保护的成员可以由子类访问,它们是否是公共 API 的一部分?因此,它们是否与显式公共成员共享相同的向后兼容性要求?
我想这个问题会变得更加复杂(来自例如 Scala)。随意回答或不回答这一点。private[foo]
答:
2赞
jaco0646
5/18/2020
#1
是,是:受保护的成员是导出的(公共)API 的一部分,并且具有相同的兼容性要求。
Java 包含访问修饰符,作为众多 JVM 和非 JVM 语言的前身,这些语言紧随其后;Effective Java 对此事有权威声明。
从第 15 项:最小化类和成员的可访问性,
...私有成员和包私有成员都是类实现的一部分,通常不会影响其导出的 API。
对于公共类的成员,当访问级别从包专用变为受保护时,可访问性会大幅增加。受保护成员是类导出的 API 的一部分,必须永远受支持。此外,导出类的受保护成员表示对实现细节的公开承诺。对受保护成员的需求应该相对较少。
评论