Classe abstrata C#

Resumo : neste tutorial, você aprenderá sobre classes abstratas C# e como usá-las de maneira eficaz.

Introdução às classes abstratas C#

Uma classe abstrata é uma classe declarada com a abstractpalavra-chave assim:

abstract class MyClass
{
}Linguagem de código:  C#  ( cs )

Ao contrário de uma classe regular, você não pode criar nenhuma instância de uma classe abstrata. Normalmente, você define uma classe abstrata para subclassificação por outras classes.

Uma classe abstrata pode conter membros abstratos, como métodos e propriedades abstratas .

Métodos abstratos

Para definir um método abstrato, você usa a abstractpalavra-chave. Ao contrário de um método regular, um método abstrato não possui implementação.

Ao criar uma subclasse de uma classe abstrata que possui um método abstrato, você precisa implementar o método abstrato na subclasse.

O exemplo a seguir mostra um exemplo de um método abstrato:

abstract class MyClass
{
    public abstract string AbstractMethod();
}Linguagem de código:  C#  ( cs )

Observe que um método abstrato não pode ser privado . Em outras palavras, o seu nível de acessibilidade precisa ser público ou protegido.

Se uma classe contém pelo menos um método abstrato, ela deve ser uma classe abstrata.

Propriedades abstratas

Como um método abstrato, uma propriedade abstrata consiste na abstractpalavra-chave e não fornece implementação para o modificador de acesso getor set.

abstract class MyClass
{
    public abstract string AbstractProperty { get; set; }
    public abstract string AbstractMethod();    
}Linguagem de código:  C#  ( cs )

Exemplo de classe abstrata C#

Primeiro, defina uma classe abstrata chamada Shape:

abstract class Shape
{
    public abstract double Area();

    public abstract int Side { get; }
}Linguagem de código:  C#  ( cs )

A Shapeclasse possui um método abstrato Area()que retorna a área da forma. Também possui a propriedade abstrata Sideque retorna o número de lados da forma.

Segundo, defina a Circleclasse que herda da Shapeclasse:

class Circle : Shape
{
    public double Radius { get; set; }

    public override int Side => 0;

    public Circle(double radius)
    {
        Radius = radius;
    }

    public override double Area()
    {
        return Math.PI * Radius * Radius;
    }
}Linguagem de código:  C#  ( cs )

Nesta Circleclasse, devemos implementar Area()o método e Sidea propriedade.

Como um círculo tem zero lados, a Sidepropriedade retorna 0. Além disso, o Area()método retorna a área do círculo com base em seu raio (R) e PI usando a fórmula PI * R 2

Terceiro, defina a Squareclasse que herda da Shapeclasse:

class Square: Shape
{
    public double Length { get; set; }

    public override int Side => 4;

    public Square(double length)
    {
        Length = length;
    }
    public override double Area()
    {
        return Length * Length;
    }
}Linguagem de código:  C#  ( cs )

Nesta Squareclasse, a Sidepropriedade retorna 4. Além disso, o Area()método retorna a área do quadrado com base em seu comprimento.

Finalmente, crie uma série de formas, incluindo um círculo e um quadrado, e calcule suas áreas:

// Program.cs

Shape[] shapes =
{
    new Square(10),
    new Circle(100)
};

foreach(Shape shape in shapes)
{
    Console.WriteLine($"The area of the {shape} is {shape.Area():0.##}");
}Linguagem de código:  C#  ( cs )

Saída:

The area of the Square is 100
The area of the Circle is 31415.93Linguagem de código:  C#  ( cs )

Resumo

  • Uma classe abstrata não pode ser instanciada. Pode ser subclassificado.
  • Uma classe abstrata pode conter membros abstratos, incluindo métodos e propriedades abstratas.
  • Métodos e propriedades abstratos não contêm implementação.
  • As subclasses de uma classe abstrata devem implementar os métodos e propriedades abstratos.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *