Clases y métodos estáticos
En C#, las clases estáticas y los métodos estáticos son conceptos importantes. Permíteme explicarte en detalle:
Clases estáticas:
- Una clase estática es una clase especial que no se puede instanciar (no se pueden crear objetos a partir de ella).
- Características de las clases estáticas:
- Solo pueden contener miembros estáticos (campos, propiedades, métodos, eventos).
- No se pueden crear instancias de ellas con el operador
new
. - Son útiles para agrupar métodos o funciones que no requieren almacenar datos de instancia.
- Se utilizan para crear contenedores de utilidades o bibliotecas de funciones.
- No pueden heredar ni ser heredadas por otras clases.
- Son selladas implícitamente (no se pueden heredar).
- Se cargan en memoria cuando se inicia la aplicación y permanecen allí durante toda la ejecución.
Ejemplo de clase estática:
Supongamos que queremos crear una clase estática llamada Calculadora
con métodos para sumar y restar:
public static class Calculadora
{
public static int Sumar(int a, int b)
{
return a + b;
}
public static int Restar(int a, int b)
{
return a - b;
}
}
En este ejemplo:
Calculadora
es una clase estática.- Los métodos
Sumar
yRestar
son métodos estáticos que se pueden llamar directamente con el nombre de la clase (Calculadora.Sumar(5, 3)
).
Métodos estáticos:
- Un método estático es un método que pertenece a la clase en lugar de a una instancia específica de la clase.
- Características de los métodos estáticos:
- Se definen con la palabra clave
static
. - No pueden acceder a miembros de instancia (campos no estáticos o propiedades).
- Se llaman directamente a través del nombre de la clase, sin necesidad de crear objetos.
- Son útiles para operaciones que no requieren estado de instancia o para funciones de utilidad.
- Se definen con la palabra clave
Ejemplo de método estático:
Supongamos que queremos crear un método estático para calcular el factorial de un número:
public static class Matematicas
{
public static int Factorial(int n)
{
if (n == 0)
return 1;
else
return n * Factorial(n - 1);
}
}
En este ejemplo:
Factorial
es un método estático que se puede llamar directamente conMatematicas.Factorial(5)
.
Las clases y los métodos estáticos son útiles para organizar y encapsular funcionalidades que no requieren almacenamiento de datos de instancia.
Propiedades estáticas:
- Una propiedad estática es una propiedad que se asocia con la clase en lugar de con objetos individuales.
- Características de las propiedades estáticas:
- Se definen con la palabra clave
static
. - Se acceden a través del nombre de la clase, no a través de una instancia.
- Son compartidas por todas las instancias de la clase.
- Se utilizan para almacenar datos que deben ser comunes a todas las instancias.
- No pueden acceder a miembros de instancia (campos no estáticos o propiedades).
- Se inicializan solo una vez, cuando se carga la clase en memoria.
- Se definen con la palabra clave
Ejemplo de propiedad estática en C#:
Supongamos que queremos contar cuántas instancias de la clase Persona
se han creado:
public class Persona
{
private static int contador = 0; // Campo estático
public string Nombre { get; set; }
public Persona(string nombre)
{
Nombre = nombre;
contador++; // Incrementar el contador al crear una instancia
}
public static int ObtenerContador()
{
return contador;
}
}
En este ejemplo:
contador
es un campo estático que mantiene un seguimiento del número de instancias creadas.ObtenerContador()
es un método estático que devuelve el valor del contador.
Para usar la propiedad estática:
Persona persona1 = new Persona("Juan");
Persona persona2 = new Persona("María");
Console.WriteLine($"Número de personas creadas: {Persona.ObtenerContador()}");
En este caso, ObtenerContador()
se llama directamente a través del nombre de la clase, sin necesidad de crear objetos.
Las propiedades estáticas son útiles para almacenar datos compartidos entre todas las instancias de una clase.