Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Dominando clases y métodos sealed en C#: Cuándo usarlos, ejemplos claros y mejora de seguridad y rendimiento

Entendiendo clases y métodos sealed en C#

Esta guía explica cómo usar la palabra clave sealed para restringir la herencia y la sobrescritura de métodos en C#, con ejemplos de código prácticos.

Clase sealed

En C#, la palabra clave sealed impide que una clase sea heredada. Una clase sealed nunca puede tener un tipo derivado.

Ejemplo:

using System;
namespace SealedClass {
    sealed class Animal { }
    // Intentar heredar una clase sealed resulta en error de compilación
    class Dog : Animal { }
    class Program {
        static void Main (string [] args) {
            // crear objeto de Dog class
            Dog d1 = new Dog();
            Console.ReadLine();
        }
    }
}

El compilador emite:

error CS0509: 'Dog': cannot derive from sealed type 'Animal'

Método sealed

Al sobrescribir un método virtual, puedes querer prevenir más sobrescrituras en clases derivadas. Prefija la declaración override con sealed para lograr esto.

Ejemplo:

using System;
namespace SealedClass {
    class Animal {
        public virtual void MakeSound() {
            Console.WriteLine("Animal Sound");
        }
    }
    class Dog : Animal {
        // Sobrescritura sealed
        sealed public override void MakeSound() {
            Console.WriteLine("Dog Sound");
        }
    }
    class Puppy : Dog {
        // Intentar sobrescribir un método sealed causa error de compilación
        public override void MakeSound() {
            Console.WriteLine("Puppy Sound");
        }
    }
    class Program {
        static void Main (string [] args) {
            // crear objeto de Puppy class
            Puppy d1 = new Puppy();
            Console.ReadLine();
        }
    }
}

Error resultante:

error CS0239: 'Puppy.MakeSound()': cannot override inherited member 'Dog.MakeSound()' because it is sealed

Consejo: Sellando un método sobrescrito se detiene la sobrescritura adicional en una cadena de herencia multinivel.


¿Por qué usar clases sealed?

  1. Seguridad e integridad – Una clase sealed no puede extenderse, por lo que su comportamiento permanece predecible y no puede ser alterado por subclases.
  2. Rendimiento – El runtime puede optimizar tipos sealed más agresivamente porque sabe que no hay subclases.
  3. Tipos de utilidad estática – Muchas bibliotecas exponen miembros estáticos a través de clases sealed (p.ej., Pens en System.Drawing).

Por ejemplo, la clase Pens proporciona instancias preconfiguradas de Pen para colores estándar:

Pen bluePen = Pens.Blue; // representa un bolígrafo azul

Como Pens es sealed, sus miembros estáticos no pueden ser sobrescritos o alterados por otros tipos.

Lenguaje C

  1. ASTM A729 Clase A: Acero Doble Normalizado y Revenido - Propiedades Clave y Estándares
  2. ASTM A649 Clase 2: Acero Normalizado y Revenido - Especificaciones y Propiedades
  3. Acero ASTM A288 Clase 4 Temple y Revenido: Especificaciones y Propiedades
  4. Clases y objetos en C#: Fundamentos para POO robusta
  5. Dominando clases y métodos abstractos en C#: Guía práctica
  6. Entendiendo clases y métodos parciales en C#
  7. Clases y Objetos en C++: Guía Práctica de Programación Orientada a Objetos
  8. Funciones y clases amigas en C++: dominando el control de acceso
  9. Herencia en C#: Construyendo código reutilizable y mantenible
  10. Polimorfismo en C#: Enlace estático vs dinámico explicado
  11. Domina Java: Entendiendo Objetos, Clases y Conceptos Básicos de POO