#360 – Property Modifiers Required for Polymorphic Behavior
July 5, 2011 Leave a comment
There are three combinations of modifiers that make sense, in determining whether properties in a class are virtual or non-virtual.
Typical combinations of modifiers for base class / derived class (assuming that the property’s name and type are the same in both the base and derived class):
- (no modifier) / new – Both properties are non-virtual, derived class property hides the base class property
- virtual / override – Both properties are virtual and support polymorphic behavior
- virtual / new – Base class property is virtual, derived class property is non-virtual, derived class property hides the base class property
There are two other combinations that are allowed, but result in a compiler warning indicating that you should use new in the derived class to be explicit:
- (no modifier) / (no modifier) – is equivalent to: (no modifier) / new
- virtual / (no modifier) – is equivalent to: virtual / new