Is it always necessary to follow the sealed
keyword with override
in the signature of a method like the below code:
public sealed override string Method1(){.....}
I mean, if I want to "seal" the method within the base class without overriding, is the override
keyword still necessary?
You can only seal an override, so I guess the answer is yes.
Sealing a method only makes sense if you override it.
What happens here is the following:
You are overriding a method from a base class (
override
) and tell the compiler that classes derived from your class are no longer allowed to override this method (sealed
).If the method is a new one declared by you in your class and you want to prevent derived classes from overriding it, simply don't declare it as virtual.
If the method is declared in a base class but is not overridable sealing it wouldn't make any sense, because it already can't be overriden.
I think Mr. Hilgarth has provided the best answer here , but just to add something new for programmers who have a previous background in Java(like myself), I think most programmers new to C#, tend to confuse
sealed
withfinal
inJava
with respect to overriding.In Java, the default behaviour without specifying
"any"
modifier is that the method can be overriden in its derived classes.While in C#, the default behaviour is that the method cannot be overriden unless explicitly specified using the
virtual
keyword.Hope this helps to supplement the best answer above.