所以我正在使用包含一些Web服务的单例类。对服务的引用存储为私有静态只读成员。我希望有一个非常相似的类,它使用相同的接口包装不同的Web服务。如果我从第一个类继承并覆盖私有静态只读成员与新的成员将一切顺利,我认为?所有继承的函数(一些是公共的,一些是私有的,一些是静态的)是否会使用新的引用?
我问,因为我之前遇到了一些静态成员继承的怪癖。
答案 0 :(得分:5)
不,它不会起作用。静态成员附加到类型,而不是实例,并且不能被覆盖。如果更改派生类中的静态值(必须至少为protected
,而不是private
),那么将更改基类和派生类的所有实例的值。
这里要注意的重要一点是静态字段附加到基本类型。当从派生类派生类派生类使用与基类相同的静态实例时,您不会获得静态字段的新副本。