C# ¿cómo puedo ocultar un método heredado?

Ya... es rebuscado, pero me hace falta. Supongamos que tenemos una clase ClaseA, con un método m1 (además de otros método y atributos):

class ClaseA
{
     ...
     public void m1() { ...}
}


Luego, una clase ClaseB, con todos los métodos de ClaseA heredados, PERO no quiero que herede m1 (o al menos el usuario no pueda verlo) ¿Cómo lo puedo hacer? He probado a redefinir m1() en ClaseB con private, pero no me deja.

Saludos.
En principio, C# no te va a dejar hacerlo y por un buen motivo. Si una clase es subtipo de otra, entonces debe mantener intacta la interfaz pública de la clase padre, permitiendo únicamente que puedas redefinir la implementación en la especialización del método en las hijas.

Si una clase hija debe tener acceso a los métodos de la clase padre pero no quieres que el cliente final de la clase pueda verlos, declara el método como protected en la clase padre. Si esto no es lo que buscas, yo me replantearía el diseño.
Bah... también era solo por curiosidad... Gracias por tu ayuda :).
2 respuestas