In an abstract
base class if we have some static
fields then what happens to them ?
Is their scope the classes which inherit from this base class or just the type from which it is inheriting (each subclass has it's own copy of the static
field from the abstract
base class)?
static
members are entirely specific to the declaring class; subclasses do not get separate copies. The only exception here is generics; if an open generic type declares static fields, the field is specific to that exact combination of type arguments that make up the closed generic type; i.e. Foo<int>
would have separate static fields to Foo<string>
, assuming the fields are defined on Foo<T>
.