Compartilhar via


Classes abstratas e seladas e membros de classe (guia de programação do C#)

O abstrata palavra-chave permite que você crie classes e classe membros que estão incompletas e devem ser implementados em uma classe derivada.

O lacrado palavra-chave permite evitar que a herança de uma classe ou determinados membros da classe que foram marcados anteriormente virtual.

Classes abstratas e membros de classe

Classes podem ser declarados como abstrato, colocando-se a palavra-chave abstract antes da definição de classe.Por exemplo:

public abstract class A
{
    // Class members here.
}

Uma classe abstrata não pode ser instanciada.A finalidade de uma classe abstrata é fornecer uma definição de uma classe base que podem ser compartilhados por várias classes derivadas.Por exemplo, uma biblioteca de classes talvez defina uma classe abstrata que é usada como um parâmetro para muitas funções, e necessita que os programadores usem a biblioteca para fornecer suas próprias implementações de uma classe, criando uma classe derivada.

Classes abstratas também podem definir métodos abstratos.Isso é feito adicionando a palavra-chave abstract antes do tipo de retorno do método.Por exemplo:

public abstract class A
{
    public abstract void DoWork(int i);
}

Métodos abstratos não têm nenhuma implementação, para que a definição do método é seguida por um ponto e vírgula em vez de um bloco de método normal.Classes derivadas da classe abstrata devem implementar todos os métodos abstratos.Quando uma classe abstrata herda um método virtual de uma classe base, a classe abstrata pode substituir o método virtual com um método abstrato.Por exemplo:

// compile with: /target:library
public class D
{
    public virtual void DoWork(int i)
    {
        // Original implementation.
    }
}

public abstract class E : D
{
    public abstract override void DoWork(int i);
}

public class F : E
{
    public override void DoWork(int i)
    {
        // New implementation.
    }
}

Se um virtual método é declarado abstract, ele é ainda virtual para qualquer classe que herda da classe abstrata.Uma classe que herda um método abstrato não é possível acessar a implementação do método original — no exemplo anterior, DoWork na classe f não é possível chamar DoWork na classe d.Dessa forma, uma classe abstrata pode forçar a classes derivadas para fornecer novas implementações de método para métodos virtuais.

Classes seladas e membros de classe

Classes podem ser declarados como lacrado , colocando a palavra-chave sealed antes da definição de classe.Por exemplo:

public sealed class D
{
    // Class members here.
}

Uma classe selada não pode ser usada como uma classe base.Por esse motivo, ele também não pode ser uma classe abstrata.Classes seladas impedem a derivação.Porque eles nunca podem ser usados como uma classe base, algumas otimizações de tempo de execução podem tornar membros de classe sealed chamada ligeiramente mais rápidos.

Um membro da classe, método, campo, propriedade ou evento, em uma classe derivada que está substituindo o membro virtual da classe base pode declarar esse membro como sealed.Isso anula o aspecto virtual do membro para qualquer classe derivada ainda mais.Isso é feito colocando o sealed palavra-chave antes do Substituir palavra-chave na declaração de membro da classe.Por exemplo:

public class D : C
{
    public sealed override void DoWork() { }
}

Consulte também

Tarefas

Como: definir propriedades abstratas (guia de programação do C#)

Referência

Classes e estruturas (guia de programação do C#)

Herança (guia de programação do C#)

Métodos (guia de programação do C#)

Campos (guia de programação do C#)

Conceitos

Guia de programação do C#