71 - Clases estáticas |
Una clase se la puede hacer estática siempre y cuando todos sus atributos sean estáticos, lo mismo que sus métodos.
No se pueden crear objetos de una clase estática.
Definir una clase estática llamada Operaciones. Implementar cuatro métodos que permitan sumar,restar,multiplicar y dividir dos enteros.:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ClaseEstatica1 { static class Operaciones { public static int Sumar(int valor1, int valor2) { return valor1 + valor2; } public static int Restar(int valor1, int valor2) { return valor1 - valor2; } public static int Multiplicar(int valor1, int valor2) { return valor1 * valor2; } public static int Dividir(int valor1, int valor2) { return valor1 / valor2; } } class Program { static void Main(string[] args) { Console.WriteLine("10+5 es " + Operaciones.Sumar(10, 5)); Console.WriteLine("10-5 es " + Operaciones.Restar(10, 5)); Console.WriteLine("10*5 es " + Operaciones.Multiplicar(10, 5)); Console.WriteLine("10/5 es " + Operaciones.Dividir(10, 5)); Console.ReadKey(); } } }
Como vemos le antecedemos a la declaración de la clase la palabra clave static:
static class Operaciones
Como definimos la clase de tipo static estamos obligados a definir los cuatro métodos de tipo static:
public static int Sumar(int valor1, int valor2) { return valor1 + valor2; } public static int Restar(int valor1, int valor2) { return valor1 - valor2; } public static int Multiplicar(int valor1, int valor2) { return valor1 * valor2; } public static int Dividir(int valor1, int valor2) { return valor1 / valor2; }
Luego si queremos definir alguno de los métodos no estático se produce un error en tiempo de compilación:
public int Sumar(int valor1, int valor2) { return valor1 + valor2; }
ERROR| Sumar: no se puede declarar miembros estáticos en una clase estática.
También se genera un error si queremos crear un objeto de una clase estática:
Operaciones op = new Operaciones();
ERROR| No se puede crear ninguna instancia de la clase Operaciones.