Diferencia entre la anulación de métodos y la ocultación de métodos en C#

Method Overriding es una técnica que permite invocar funciones de otra clase (clase base) en la clase derivada. La creación de un método en la clase derivada con la misma firma que un método en la clase base se denomina reemplazo de métodos .
En palabras simples, Overriding es una función que permite que una subclase o clase secundaria proporcione una implementación específica de un método que ya proporciona una de sus superclases o clases principales. Cuando un método en una subclase tiene el mismo nombre, los mismos parámetros o firma y el mismo tipo de retorno (o subtipo) que un método en su superclase, entonces se dice que el método en la subclase anula el método en la superclase. -clase.

Ejemplo:

// C# program to illustrate the 
// Method overriding concept
using System;
  
// Base class
class My_Parent {
  
    // virtual method
    public virtual void display()
    {
        Console.WriteLine("My new parent class.. !");
    }
}
  
// Derived class
class My_Child : My_Parent {
  
    // Here display method is overridden
    public override void display()
    {
        Console.WriteLine("My new child class.. !");
    }
}
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        My_Parent obj;
  
        // Creating object of the base class
        obj = new My_Parent();
  
        // Invoking method of the base class
        obj.display();
  
        // Creating object of the derived class
        obj = new My_Child();
  
        // Invoking method of derived class
        obj.display();
    }
}

Producción:

My new parent class.. !
My new child class.. !

En Method Hiding , puede ocultar la implementación de los métodos de una clase base de la clase derivada utilizando la nueva palabra clave. O, en otras palabras, en la ocultación de métodos, puede redefinir el método de la clase base en la clase derivada utilizando la nueva palabra clave.

Ejemplo:

// C# program to illustrate the
// concept of method hiding
using System;
  
// Base Class
public class My_Parent {
  
    public void show()
    {
        Console.WriteLine("This is my parent class.");
    }
}
  
// Derived Class
public class My_Child : My_Parent {
  
    // Hide the method of base class
    // Using new keyword
    public new void show() {
  
        Console.WriteLine("This is my child class.");
    }
}
  
public class GFG {
  
    // Main method
    static public void Main()
    {
  
        // Creating the object of 
        // the derived class
        My_Child obj = new My_Child();
  
        // Access the method of derived class
        obj.show();
    }
}

Producción:

This is my child class.

Anulación de método Vs Ocultación de método

Anulación de método Ocultación del método
En la anulación de métodos, debe definir el método de una clase principal como un método virtual utilizando la palabra clave virtual y el método de la clase secundaria como un método anulado utilizando la palabra clave anular. En la ocultación de métodos, simplemente crea un método en una clase principal y en la clase secundaria necesita definir ese método usando una nueva palabra clave.
Solo redefine la implementación del método. En la ocultación de métodos, puede redefinir completamente el método.
Aquí anular es un tipo de objeto. Aquí ocultar es un tipo de referencia.
Si no utiliza la palabra clave override, el compilador no anulará el método. En lugar del compilador anulado, ocultará el método. Si no usa la nueva palabra clave, el compilador ocultará automáticamente el método de la clase base.
En la anulación de métodos, cuando la variable de referencia de la clase base apunta al objeto de la clase derivada, llamará al método anulado en la clase derivada. En la ocultación del método, cuando la variable de referencia de la clase base apunta al objeto de la clase derivada, llamará al método oculto en la clase base.

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *