公共API的受保护成员吗?

问题描述 投票:0回答:1

由于子类可以访问受保护的成员,因此它们是否属于公共API的一部分?因此,它们是否具有与明确的公共成员相同的向后兼容性要求?

我想这个问题会变得更加复杂,例如private[foo](例如Scala)。随意回答这个问题。

oop language-agnostic protected
1个回答
0
投票

是,是:受保护的成员是导出的(公共)API的一部分,并且具有相同的兼容性要求。

Java将访问修饰符作为其后继的众多JVM和非JVM语言的先驱;并且Effective Java对此问题具有权威性声明。

来自第15项:最小化类和成员的可访问性

...私有成员和包私有成员都是类实现的一部分,通常不会影响其导出的API。

对于公共类的成员,当访问级别从包私有变为受保护时,可访问性将大大增加。受保护的成员是该类导出的API的一部分,必须得到永久的支持。同样,导出类的受保护成员表示对实施细节的公开承诺。对受保护成员的需​​求应该相对较少。

© www.soinside.com 2019 - 2024. All rights reserved.