2013-06-24 8 views
9

Ecco la mia classe e non voglio che questo metodo venga sovrascritto nelle classi child, come posso eseguire questo comportamento?Ignorare l'override di un metodo in una classe derivata

class A 
{ 
    public virtual void demo() 
    { 
    } 
} 

class B : A 
{ 
    public override void demo() 
    { 
    } 
} 

// when Class B be inherited in C, methods can be overridden further, 
// but I don't want the method to be overridden further. 
class C : B 
{ 

} 
+1

Vuoi rendere questo metodo [sigillato] (http://msdn.microsoft.com/en-us/library/88c54tsw.aspx)? –

risposta

9

put 'sealed' modificatore prima override void demo()

class A 
{ 
    public virtual void demo() 
    { 
    } 
} 

class B:A 
{ 
    public sealed override void demo() 
    { 
    } 
} 

//B can be inherited in C but demo() method can not be overriden further 
class C:B 
{ 

} 
11

basta il sealed modificatore di: (. Suppongo che normalmente sarebbe un nome conforme alle convenzioni .NET, ovviamente)

public sealed override void demo() 
{ 
    // Whatever implementation 
} 

Se si desidera impedire il metodo da sovrascrivere senza modificare il comportamento te stesso, è necessario eseguire l'override ma chiamare esplicitamente il comportamento precedente:

public sealed override void demo() 
{ 
    base.demo(); 
} 

Si noti che quando applicato a un metodo (o proprietà), sealed può solo essere applicato in combinazione con override.