#350 – Method Modifiers Required for Polymorphic Behavior
June 21, 2011 Leave a comment
There are three combinations of method modifiers that make sense, in determining whether methods in a class are virtual or non-virtual.
Typical combinations of modifiers for base class / derived class (assuming that method signature is the same in both the base and derived class):
- (no modifier) / new – Both methods are non-virtual, derived class method hides the base class method
- virtual / override – Both methods are virtual, support polymorphic behavior
- virtual / new – Base class method virtual, derived class method non-virtual, derived class method hides base class method
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) – effectively (no modifier) / new
- virtual / (no modifier) – effectively virtual / new