Sarma, I rearranged your code:
Mehtod func in derived "override" method func in base, not "overload". When you override parent's method,
you should note five items: the same return type, the smae method name, the same arguments list, more visibility(e.g. you can't override public method with protected method) and throw the subset exception of the parent's exception if needed. Hope this helps.