Sé que puedo usar el sellado para evitar que otras clases hereden cierta clase, , pero ¿es posible permitir la herencia pero evitar la anulación de algunos métodos virtuales?Prevenir la anulación de métodos individuales en C#
Respuesta
también puede usar el modificador sellado para evitar que una clase derivada anule aún más el método.
mira esto: Sealed methods
Sólo virtual
métodos se pueden anular.
Simplemente omita virtual
, y su método no será reemplazable.
Sí. La palabra clave sealed
también se puede usar en métodos, para indicar que un método que es virtual o abstracto a niveles de herencia más altos no puede ser heredado.
Si el método nunca fue virtual o abstracto para empezar, no se preocupe; no puede ser anulado
Tenga en cuenta que sealed
solo afecta al método anulado; método ocultándose no se puede detener de esta manera, por lo que una clase secundaria todavía puede declarar un método new
con el mismo nombre y firma que su método sellado.
Sí. debe utilizar anulación sellada para conocer el método para lograrlo.
Usted puede utilizar la palabra clave sealed
de dos maneras:
- Antes de una clase para evitar la herencia.
- Antes de una función para evitar la anulación.
Para permitir que la herencia no poner la palabra clave sealed
antes de la clase y para evitar primordial poner sealed
antes de la función que usted no desea ser anulado.
que pueda obtener el sealed
palabra clave para trabajar en un método en la clase abstracta, haciendo que la propia clase abstracta deriva de algo:
abstract class DocumentTemplateBase
{
public abstract void WriteTitle();
public abstract void WriteSections();
}
abstract class DocumentTemplate : DocumentTemplateBase
{
public override sealed void WriteTitle()
{
Console.WriteLine("Project document");
}
public override sealed void WriteSections()
{
Console.WriteLine("Sections");
}
abstract public void WriteContent();
}
Aún derivando su clase concreta de la original (y ahora derivados) abstracta clase:
class Document1_FromTemplate : DocumentTemplate
{
public override void WriteTitle() //error!
{
Console.WriteLine("Project1 document");
}
"no puede anular miembro heredado 'Dynamics.DocumentTemplate.WriteTitle()' porque se sella"
No hay nada, sin embargo, para evitar un implementador de new
ing que:
class Document1_FromTemplate : DocumentTemplate
{
public new void WriteTitle() //sorry! can't stop it!
{
Console.WriteLine("Project1 document");
}
- 1. Métodos de anulación C++
- 2. Anulación de métodos protegidos
- 3. Encontrar métodos de anulación
- 4. Anulación de métodos virtuales calificados
- 5. métodos de anulación sin subclases en Java
- 6. C# OO problema de diseño con anulación de métodos
- 7. Prevenir la herencia de clases en C++
- 8. métodos especiales Anulación de una instancia
- 9. Anulación de los rasgos y los métodos abstractos en Scala
- 10. C++ Anulación ... sobrescritura?
- 11. C++ problema de anulación/sobrecarga
- 12. C# anulación de hormigón de clase genérica
- 13. Caracteres individuales de salida en C
- 14. modificadores de acceso java y métodos de anulación
- 15. Anulación de la función sobrecargada de una base en C++
- 16. ¿Cómo prevenir ciertas formas de entrada al escribir métodos?
- 17. Objective-C - Método de anulación en la subclase
- 18. Prevenir la aplicación C# del proceso kill
- 19. ¿Diferencia entre sombreado y anulación en C#?
- 20. JCrop: ¿Prevenir la des-selección?
- 21. C#: Métodos de empaquetado en otros métodos
- 22. Métodos para almacenar metadatos asociados con archivos individuales?
- 23. C#: Anulación de OnPaint en ProgressBar no funciona?
- 24. Simpler "Prevenir clases derivadas" en C++
- 25. ¿Cómo prevenir múltiples definiciones en C?
- 26. Anulación de función y dominio C++
- 27. ¿Cuál es la diferencia entre la anulación y las nuevas palabras clave en C#?
- 28. ¿Prevenir la virtualización de UAC?
- 29. Anulación explícita de la función virtual
- 30. Variación y anulación de la función Scala
incorrecto. La palabra clave 'sealed' solo se puede utilizar en un método reemplazado para evitar nuevas anulaciones; eso no es lo que está pidiendo. – SLaks
Hmm, la pregunta no tiene ningún sentido a menos que el OP esté hablando de un método virtual. Intentemos dar respuestas sensatas a preguntas sensatas. Esta respuesta es sensata. –
SLaks: el modificador sellado es perfectamente aceptable.Es solo una cuestión de estructurar la herencia ... – code4life