Sobrecarga
La sobrecarga de métodos en C# también se puede aplicar a la herencia de clases. En este caso, una clase derivada puede sobrecargar un método de la clase base para proporcionar una implementación personalizada.
Por ejemplo, si tiene una clase base Figura
que tiene un método CalcularArea
, puede sobrecargar este método en una clase derivada Circulo
para proporcionar una implementación personalizada para calcular el área de un círculo. A continuación, se muestra un ejemplo simplificado de cómo se puede sobrecargar el método CalcularArea
en la clase Circulo
:
public class Figura
{
public virtual double CalcularArea()
{
return 0;
}
}
public class Circulo : Figura
{
public double Radio { get; }
public Circulo(double radio)
{
Radio = radio;
}
public override double CalcularArea()
{
return Math.PI * Radio * Radio;
}
}
En este ejemplo, la clase Figura
tiene un método CalcularArea
que devuelve un valor predeterminado de 0
. La clase Circulo
hereda de Figura
y sobrecarga el método CalcularArea
para proporcionar una implementación personalizada que calcula el área de un círculo.
La sobrecarga de métodos en la herencia de clases es útil cuando desea proporcionar una implementación personalizada de un método en una clase derivada.
Sobrecargar el método ToString en una clase propia en C# te permite definir cómo se debe representar una instancia de tu clase como una cadena de texto. Aquí hay un ejemplo utilizando una clase Persona:
csharp
using System;
public class Persona { public string Nombre { get; set; } public int Edad { get; set; }
// Constructor
public Persona(string nombre, int edad)
{
Nombre = nombre;
Edad = edad;
}
// Sobrecarga del método ToString
public override string ToString()
{
return $"Nombre: {Nombre}, Edad: {Edad}";
}
}
class Program { static void Main() { // Crear una instancia de Persona Persona persona = new Persona(“Juan”, 30);
// Utilizar el método ToString
string representacionCadena = persona.ToString();
// Imprimir la representación de cadena
Console.WriteLine(representacionCadena);
}
}
En este ejemplo, la clase Persona tiene un método ToString sobrecargado que devuelve una cadena que representa la instancia de la clase con el formato “Nombre: …, Edad: …”. Cuando se crea una instancia de Persona y se llama al método ToString, el resultado se imprime en la consola.
Al sobrecargar el método ToString, puedes controlar cómo se presenta tu clase cuando se convierte a una cadena de texto, lo que puede ser útil al imprimir o depurar. Ten en cuenta que la mayoría de las clases en C# ya tienen una implementación predeterminada de ToString, pero puedes personalizarla según tus necesidades específicas.
virtual
se utiliza para indicar que un método puede ser sobrescrito por una clase derivada. Esto significa que la clase derivada puede proporcionar su propia implementación del método, en lugar de utilizar la implementación heredada de la clase base. Aquí hay un ejemplo:
public class Animal
{
public virtual void Eat()
{
Console.WriteLine("The animal is eating.");
}
}
public class Dog : Animal
{
public override void Eat()
{
Console.WriteLine("The dog is eating.");
}
}
En este ejemplo, la clase Dog
hereda de la clase Animal
. La clase Animal
define un método Eat()
que utiliza el modificador virtual
. La clase Dog
sobrescribe este método utilizando el modificador override
. Cuando se llama al método Eat()
en una instancia de la clase Dog
, se ejecuta la nueva implementación del método.
- Override: Es un modificador que se utiliza para proporcionar una nueva implementación de un método heredado de la clase base. La nueva implementación debe tener la misma firma que el método heredado. Al utilizar el modificador
override
, el método de la clase base se reemplaza por completo. Aquí hay un ejemplo:
public class Animal
{
public virtual void Eat()
{
Console.WriteLine("The animal is eating.");
}
}
public class Dog : Animal
{
public override void Eat()
{
Console.WriteLine("The dog is eating.");
}
}
En este ejemplo, la clase Dog
hereda de la clase Animal
. La clase Dog
anula el método Eat()
de la clase Animal
utilizando el modificador override
. Cuando se llama al método Eat()
en una instancia de la clase Dog
, se ejecuta la nueva implementación del método.
- Shadow: Es un modificador que se utiliza para proporcionar una nueva implementación de un miembro heredado de la clase base. La nueva implementación debe tener la misma firma que el miembro heredado. Al utilizar el modificador
new
, el miembro de la clase base se oculta, pero no se reemplaza por completo. Aquí hay un ejemplo:
public class Animal
{
public void Eat()
{
Console.WriteLine("The animal is eating.");
}
}
public class Dog : Animal
{
public new void Eat()
{
Console.WriteLine("The dog is eating.");
}
}
En este ejemplo, la clase Dog
hereda de la clase Animal
. La clase Dog
sombrea el método Eat()
de la clase Animal
utilizando el modificador new
. Cuando se llama al método Eat()
en una instancia de la clase Dog
, se ejecuta la nueva implementación del método.
- Overwrite: No es un modificador en C#. En su lugar, se refiere a la acción de reemplazar completamente un miembro heredado de la clase base con una nueva implementación. En C#, esto se logra utilizando el modificador
override
.