Classe e método selados em C#
Classe e método selados em C#
Neste tutorial, aprenderemos sobre a classe e o método selados em C# com a ajuda de exemplos.
Classe selada
Em C#, quando não queremos que uma classe seja herdada por outra classe, podemos declarar a classe como uma classe selada .
Uma classe selada não pode ter uma classe derivada. Usamos o
sealed
palavra-chave para criar uma classe selada. Por exemplo,
using System;
namespace SealedClass {
sealed class Animal {
}
// trying to inherit sealed class
// Error Code
class Dog : Animal {
}
class Program {
static void Main (string [] args) {
// create an object of Dog class
Dog d1 = new Dog();
Console.ReadLine();
}
}
}
No exemplo acima, criamos uma classe selada Animal . Aqui, estamos tentando derivar Dog classe do Animal classe.
Como uma classe selada não pode ser herdada, o programa gera o seguinte erro:
error CS0509: 'Dog': cannot derive from sealed type 'Animal'
Método selado
Durante a substituição do método, se não quisermos que um método substituído seja substituído por outra classe, podemos declará-lo como um método selado .
Usamos um
sealed
palavra-chave com um método substituído para criar um método selado. Por exemplo,
using System;
namespace SealedClass {
class Animal {
public virtual void makeSound() {
Console.WriteLine("Animal Sound");
}
}
class Dog : Animal {
// sealed method
sealed public override void makeSound() {
Console.WriteLine("Dog Sound");
}
}
class Puppy : Dog {
// trying to override sealed method
public override void makeSound() {
Console.WriteLine("Puppy Sound");
}
}
class Program {
static void Main (string [] args) {
// create an object of Puppy class
Puppy d1 = new Puppy();
Console.ReadLine();
}
}
}
No exemplo acima, substituímos o makeSound() método dentro do Cão classe.
// Inside the Dog class
sealed public override void makeSound() {
Console.WriteLine("Dog Sound");
}
Observe que usamos o
sealed
palavra-chave com makeSound() . Isso significa que o Cachorrinho classe que herda o Dog classe não tem permissão para substituir makeSound() . Assim, obtemos um erro
error CS0239: 'Puppy.makeSound()': cannot override inherited member 'Dog.makeSound()' because it is sealed
quando tentamos substituir ainda mais o makeSound() método dentro do Puppy classe.
Observação :Selar um método substituído impede a substituição de método na herança multinível.
Por que classe selada?
1. Usamos classes seladas para evitar herança. Como não podemos herdar de uma classe selada, os métodos da classe selada não podem ser manipulados de outras classes.
Isso ajuda a evitar problemas de segurança. Por exemplo,
sealed class A {
...
}
// error code
class B : A {
...
}
Como classe A não pode ser herdado, classe B não pode substituir e manipular os métodos da classe A .
2. Um dos melhores usos de classes seladas é quando você tem uma classe com membros estáticos.
As Canetas classe do
System.Drawing
namespace é um dos exemplos da classe selada. As Canetas classe tem membros estáticos que representam as canetas com cores padrão. Pens.Blue
representa uma caneta com cor azul. Linguagem C