我理解为什么java不允许为重写方法设置较弱的访问权限,但为什么静态方法相同?我的意思是,这些方法只能隐藏对方,对吗?那么从封装的角度来看问题是什么呢?
P.S。
我知道隐藏方法有5条规则
但毕竟,我从封装预期
中得不到这个想法答案 0 :(得分:1)
答案 1 :(得分:0)
静态方法具有特殊的访问权限,允许朋友访问实例中的成员。例如,您可以使用名为create
的静态方法创建类的默认实例,并直接修改实例中的数据,而不使用实例属性或实例方法(仅用于用法示例,不一定是用法建议)
由于这种特殊访问,对静态方法的较低访问权限可以允许您创建一个您无法使用的状态的对象,或者以不可预测和非封装的方式修改对象。
对于大多数用户定义的类来说,这只是一个小麻烦,但在子类化时允许这样做,例如容器可能会暴露严重的未定义行为问题。