Vous êtes sur la page 1sur 3

19/09/2017 Classes e membros de classes abstract e sealed (Guia de Programao em C#) | Microsoft Docs

Classes e membros de classes abstract e


sealed (Guia de Programao em C#)
2 minutos para ler Colaboradores

Neste artigo

Classes abstratas e membros de classe


Classes e membros de classes sealed
Consulte tambm

A palavra-chave abstract permite que voc crie classes e membros de classe que esto
incompletos e devem ser implementados em uma classe derivada.

A palavra-chave sealed permite evitar a herana de uma classe ou de determinados membros


de classe que foram marcados anteriormente com virtual.

Classes abstratas e membros de classe


As classes podem ser declaradas como abstratas, colocando a palavra-chave abstract antes
da definio de classe. Por exemplo:

C# Copiar

public abstract class A


{
// Class members here.
}

Uma classe abstrata no pode ser instanciada. A finalidade de uma classe abstrata fornecer
uma definio comum de uma classe base que pode ser compartilhada por vrias classes
derivadas. Por exemplo, uma biblioteca de classes pode definir uma classe abstrata que serve
como um parmetro para muitas de suas funes e exige que os programadores que usam
essa biblioteca forneam sua prpria implementao da classe, criando uma classe derivada.

As classes abstratas tambm podem definir mtodos abstratos. Isso realizado atravs da
adio da palavra-chave abstract antes do tipo de retorno do mtodo. Por exemplo:

C# Copiar

public abstract class A


{

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members 1/3
19/09/2017 Classes e membros de classes abstract e sealed (Guia de Programao em C#) | Microsoft Docs

public abstract void DoWork(int i);


}

Os mtodos abstratos no tm implementao, portanto, a definio do mtodo seguida


por um ponto e vrgula, em vez de um bloco de mtodo normal. As classes derivadas da
classe abstrata devem implementar todos os mtodos abstratos. Quando uma classe abstrata
herda um mtodo virtual de uma classe base, a classe abstrata pode substituir o mtodo
virtual por um mtodo abstrato. Por exemplo:

C# Copiar

// 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 mtodo virtual for declarado abstract , ele ainda ser virtual para qualquer classe
que herdar da classe abstrata. Uma classe que herda um mtodo abstrato no pode acessar a
implementao original do mtodo. No exemplo anterior, DoWork na classe F no pode
chamar DoWork na classe D. Dessa forma, uma classe abstrata pode forar classes derivadas
a fornecerem novas implementaes de mtodo para mtodos virtuais.

Classes e membros de classes sealed


As classes podem ser declaradas como sealed, colocando a palavra-chave sealed antes da
definio de classe. Por exemplo:

C# Copiar

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members 2/3
19/09/2017 Classes e membros de classes abstract e sealed (Guia de Programao em C#) | Microsoft Docs

public sealed class D


{
// Class members here.
}

Uma classe sealed no pode ser usada como uma classe base. Por esse motivo, tambm no
pode ser uma classe abstrata. As classes sealed impedem a derivao. Como elas nunca
podem ser usadas como uma classe base, algumas otimizaes em tempo de execuo
podem tornar a chamada a membros de classe sealed ligeiramente mais rpida.

Um mtodo, um indexador, uma propriedade ou um evento em uma classe derivada que


est substituindo um membro virtual da classe base, pode declarar esse membro como
sealed. Isso anula o aspecto virtual do membro para qualquer outra classe derivada. Isso
realizado atravs da colocao da palavra-chave sealed antes da palavra-chave override na
declarao de membro de classe. Por exemplo:

C# Copiar

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

Consulte tambm
Guia de Programao em C#
Classes e structs
Herana
Mtodos
Campos
Como definir propriedades abstract

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members 3/3

Vous aimerez peut-être aussi