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 abstract
palavra-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 abstract
palavra-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 abstract
palavra-chave e não fornece implementação para o modificador de acesso get
or 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 Shape
classe possui um método abstrato Area()
que retorna a área da forma. Também possui a propriedade abstrata Side
que retorna o número de lados da forma.
Segundo, defina a Circle
classe que herda da Shape
classe:
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 Circle
classe, devemos implementar Area()
o método e Side
a propriedade.
Como um círculo tem zero lados, a Side
propriedade 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 Square
classe que herda da Shape
classe:
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 Square
classe, a Side
propriedade 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.93
Linguagem 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.