"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Virtual vs. Nuevo en C#: ¿Cuándo anular u ocultar métodos de clase base?

Virtual vs. Nuevo en C#: ¿Cuándo anular u ocultar métodos de clase base?

Publicado el 2025-01-29
Navegar:907

Virtual vs. New in C#: When to Override or Hide Base Class Methods?

el uso de palabras clave virtuales y nuevas en

en C# En la programación orientada al objeto, generalmente se define en la clase base, y estos métodos se reescriben o se redefinen en la clase de derivados. Aunque las palabras clave "virtuales" y "nuevas" se pueden usar para modificar la declaración del método, tienen diferentes métodos de implementación.

rewriting

El método declarado en la clase base como "virtual", lo que indica que las subclases pueden reescribirse.

    Permitir clases derivadas para proporcionar diferentes métodos para la implementación sin destruir la cadena de herencia.
  • nueva palabra clave

establezca un nuevo método del mismo nombre que el método de la Fundación China en la clase de derivados.

ocultar el método básico y crear una nueva implementación en la clase derivada.
  • destruye la cadena de herencia, lo que significa que el método derivado no está relacionado con el método base.
  • Ejemplo
Considere el siguiente código:

Base de clase pública {{ Public virtual bool dosomething () {return false;} } Clase pública derivada: base: base {{ Public Anule bool dosomething () {return true;} }

Si creamos una instancia derivada y la almacenamos en la variable de tipo base, la llamada para dosomething () llamará al método de reescribir en Derived:

public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public override bool DoSomething() { return true; }
}

clase pública derivada: base {{ NUEVO NUEVO BOOL BOOL DOSomething () {return true;} }

Base a = new Derived();
a.DoSomething(); // 返回 true
cuando reescribir virtual y nuevo

public class Derived : Base
{
    public new bool DoSomething() { return true; }
}
            
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3