Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código

Entendendo Classes e Métodos Sealed em C#

Este guia explica como usar a palavra-chave sealed para restringir herança e sobrescrita de métodos em C#, com exemplos práticos de código.

Classe Sealed

Em C#, a palavra-chave sealed impede que uma classe seja herdada. Uma classe sealed nunca pode ter um tipo derivado.

Exemplo:

using System; namespace SealedClass { sealed class Animal { } // Tentar herdar uma classe sealed resulta em erro de compilação class Cachorro : Animal { } class Program { static void Main (string [] args) { // cria um objeto da classe Cachorro Cachorro d1 = new Cachorro(); Console.ReadLine(); } } }

O compilador emite:

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

Método Sealed

Ao sobrescrever um método virtual, você pode querer impedir mais sobrescritas em classes derivadas. Prefixe a declaração override com sealed para alcançar isso.

Exemplo:

using System; namespace SealedClass { class Animal { public virtual void EmitirSom() { Console.WriteLine("Som de Animal"); } } class Cachorro : Animal { // Sobrescrita sealed sealed public override void EmitirSom() { Console.WriteLine("Som de Cachorro"); } } class Filhote : Cachorro { // Tentar sobrescrever um método sealed causa erro de compilação public override void EmitirSom() { Console.WriteLine("Som de Filhote"); } } class Program { static void Main (string [] args) { // cria um objeto da classe Filhote Filhote d1 = new Filhote(); Console.ReadLine(); } } }

Erro resultante:

error CS0239: 'Filhote.EmitirSom()': cannot override inherited member 'Cachorro.EmitirSom()' because it is sealed

Dica: Selar um método sobrescrito impede mais sobrescritas em uma cadeia de herança multinível.


Por Que Usar Classes Sealed?

  1. Segurança e Integridade – Uma classe sealed não pode ser estendida, então seu comportamento permanece previsível e não pode ser alterado por subclasses.
  2. Performance – O runtime pode otimizar tipos sealed mais agressivamente porque sabe que não há subclasses.
  3. Tipos Utilitários Estáticos – Muitas bibliotecas expõem membros estáticos através de classes sealed (ex: Pens em System.Drawing).

Por exemplo, a classe Pens fornece instâncias pré-configuradas de Pen para cores padrão:

Pen canetaAzul = Pens.Blue; // representa uma caneta azul

Como Pens é sealed, seus membros estáticos não podem ser sobrescritos ou alterados por outros tipos.

Linguagem C

  1. Classes e Objetos em C#: Fundamentos para POO Robusta
  2. Dominando Classes e Métodos Abstratos em C#: Guia Prático
  3. Entendendo Classes e Métodos Parciais em C#
  4. Classes e Objetos em C++: Guia Prático de Programação Orientada a Objetos
  5. Funções Amigas e Classes Amigas em C++: Dominando o Controle de Acesso
  6. Dominando Java: Entendendo Objetos, Classes e Conceitos Fundamentais de POO
  7. Dominando Herança em C#: Construa Código Reutilizável e Manutenível
  8. Polimorfismo em C#: Binding Estático vs Dinâmico Explicado
  9. ASTM A729 Classe A: Aço Duplamente Normalizado e Revenido - Propriedades e Normas
  10. ASTM A649 Classe 2: Aço Normalizado e Revenido - Especificações e Propriedades