Sealed Class usage advocacy

I have been ever wondered and hesitate to make a practice of using “sealed” keyword with each and every class other than un-sealed type (except classes that is to be inherit/derived). I went through many articles, blogs, and tips and found diverse view on regular usage of “sealed” type.

Some advocate for using it for –

1)      It speeds as it JIT compiler works efficiently with non-virtual methods.

2)      It prevent future coming problem by restricting inheritance for those classes that are not meant for derived. A compile time checking and error is generated for type-safety.  This advocate “Always declare a new class as sealed …” 

Ref: http://www.codeproject.com/Articles/239939/Csharp-Tweaks-Why-to-use-the-sealed-keyword-on-cla

3)      Type safety: by not allowing sealed classes to be generic type constraints/arguments.

(I understand it through Static Class. Static classes are abstract and sealed by virtue. Abstract stop instantiation and sealed stops inheritance so this can't be used as generic type-constraints.  I googled it to confirm and found correct ref: http://www.ruchitsurati.net/index.php/2010/07/07/sealed-classes-as-generic-constraints/)

Some suggests for not using “sealed” unless it is very much required :

1)      It doesn't so much make efficient and can't easily noticed, so need to bother about speed of JIT.

2)      It makes burden on programmer.

 

More points to note with respect to “sealed” class:

·        A sealed class can't be a base class for other class.  è So sealed class can't be an “abstract” class.

·        Sealed method should be avoided for just stopping override. We can use “virtual” keyword for this purpose.

·        An overridden method can be “sealed” and thus it will fix this version as a final and no further overriding can be done.

·        Sealed can be used to prevent extension of existing classes so that outsiders/third person can't extend the functionality using our class.

·        Modifier abstract can't used with a “sealed” class.

(Structs are implicitly “sealed” hence they can't be inherited.)

·        Common methods, utility methods can be written in a sealed class?


Mahesh's has also explained "Why Sealed Classes?" 

http://www.c-sharpcorner.com/UploadFile/mahesh/SealedClasses11142005063733AM/SealedClasses.aspx

http://www.c-sharpcorner.com/uploadfile/puranindia/what-are-sealed-classes-and-sealed-methods/


Please comment/put your views. 


Thanks for reading