【发布时间】:2014-08-08 22:57:45
【问题描述】:
我正在回答这个问题Is there a way to override class variables in Java? 第一条获得 36 票的评论是:
如果您看到
protected static,请运行。
谁能解释为什么protected static 不受欢迎?
【问题讨论】:
-
受保护的静态字段没有任何问题,只要它是
final。跨类共享的可变静态字段绝对令人担忧。更新静态字段的多个类不太可能可靠或易于遵循,特别是因为任何受保护字段或方法的存在意味着该类旨在由其他包中的类扩展,可能是不受控制的类包含受保护字段的类的作者。 -
@VGR,
final并不意味着该字段是不可变的。您始终可以修改由final引用变量引用的object。 -
@VGR 我不同意。您制作静态变量的唯一原因是只能通过继承从另一个包中访问它,并且访问单个字段不应该是继承的原因。这是一个有缺陷的设计,IMO,如果你求助于这个,你可能应该重新考虑你的应用程序的结构。不过,这只是我的看法。
-
@LoneRider 你是对的。我在想是不可变的,而 final 当然不能保证。
-
即使我也是从同一个问题来到这里的。
标签: java oop inheritance static protected