[Mono-list] Re: Final method in C# (as the final keyword in Java)

Ympostor ympostor at clix.pt
Tue May 30 07:24:25 EDT 2006


Raja R Harinath escribió:
> Hi,
> 
> Ympostor <ympostor at clix.pt> writes:
> 
>> Simple question (forgive my ignorance):
>>
>>     public abstract class GrandFather
>>     {
>>         public abstract void DontOverrideMe();
>>     }
>>
>>     public class Father : GrandFather
>>     {
>>         public sealed override
>>             void DontOverrideMe()
>>         {
>>             Console.WriteLine("I am acting as a father");
>>         }
>>     }
>>
>>     public class Son : Father
>>     {
>>         public void DontOverrideMe()
>>         {
>>             Console.WriteLine("I am an unruly son");
>>         }
>>     }
>>
>> Why the compiler only gives a warning about Son::DontOverrideMe instead
>> of an error? And why with a "new" keyword the warning disappears? I want
>> a non overridable method :(
> 
> You have a non-overridable method (hint: try using 'override' in 'Son').

I can't override the method in Son with the override keyword, but 
without that keyword I can hide it! So I suppose that doing this:

Son oSon = new Son();
Son.DontOverrideMe();

The result would be "I am an unruly son".

I don't want that, I want that all derived classes of Father return "I 
am acting as a father" to the console, and I want the compiler to 
complain if a derived class wants to hide or override the method.

Did I clarify things a bit more? Thanks for your response Raja.

Regards.


-- 



More information about the Mono-list mailing list