Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Dominando Classes e Métodos Abstratos em C#: Guia Prático

Dominando Classes e Métodos Abstratos em C#

Explore classes e métodos abstratos em C# através de exemplos claros, padrões de herança, construtores e casos de uso do mundo real.

Classe Abstrata

Em C#, classes abstratas servem como modelos que não podem ser instanciadas diretamente. A palavra-chave abstract sinaliza que uma classe é destinada a ser subclasseada. Por exemplo:

// Define uma classe abstrata abstract class Linguagem { // Campos e métodos } // Tentar criar uma instância lança erro // Linguagem obj = new Linguagem(); 

Uma classe abstrata pode conter tanto métodos abstratos (declarações sem corpo) quanto métodos concretos (totalmente implementados). Por exemplo:

abstract class Linguagem { // Método abstrato – sem corpo public abstract void Exibir(); // Método concreto – tem implementação public void ExibirInfo() { Console.WriteLine("Método concreto em classe abstrata"); } } 

Antes de prosseguir, certifique-se de estar confortável com conceitos de herança em C#.


Herança de Classe Abstrata

Como você não pode instanciar uma classe abstrata diretamente, deve criar uma subclasse concreta que derive dela. A subclasse herda os membros da classe abstrata, permitindo que você os use através do objeto derivado. Exemplo:

using System; namespace AbstractClassDemo { abstract class Linguagem { public void Exibir() { Console.WriteLine("Método concreto em classe abstrata"); } } // Subclasse concreta class Program : Linguagem { static void Main(string[] args) { Program prog = new Program(); prog.Exibir(); Console.ReadLine(); } } } 

Saída

Método concreto em classe abstrata

Neste exemplo, Linguagem é abstrata, enquanto Program herda dela e pode chamar Exibir(). Observe que classes abstratas não podem ser sealed; elas devem sempre servir como tipos base.

Nota: Use este padrão quando precisar de um contrato comum que múltiplos tipos derivados implementarão.


Métodos Abstratos em C#

Um método abstrato declara uma assinatura sem corpo. Ele obriga classes derivadas não-abstratas a fornecer uma implementação. Por exemplo:

public abstract void Exibir();

Apenas classes abstratas podem conter métodos abstratos. Quando uma subclasse concreta herda tal classe, ela deve sobrescrever todo membro abstrato, a menos que se declare abstrata também.

Exemplo: Implementando um Método Abstrato

using System; namespace AbstractClassDemo { abstract class Animal { public abstract void EmitirSom(); } class Cachorro : Animal { public override void EmitirSom() { Console.WriteLine("Au Au"); } } class Program { static void Main(string[] args) { Cachorro cachorro = new Cachorro(); cachorro.EmitirSom(); Console.ReadLine(); } } } 

Saída

Au Au

Aqui, Animal declara um método abstrato EmitirSom(). A subclasse concreta Cachorro fornece a sobrescrita, cumprindo o contrato.

Nota: Métodos abstratos são implicitamente virtual; portanto, a palavra-chave virtual é desnecessária e não permitida.


Propriedades Abstratas com Getters e Setters

Acessadores abstratos permitem que classes derivadas forneçam lógica personalizada para operações get e set de propriedades. Exemplo:

using System; namespace AbstractClassDemo { abstract class Animal { protected string nome; public abstract string Nome { get; set; } } class Cachorro : Animal { public override string Nome { get { return nome; } set { nome = value; } } } class Program { static void Main(string[] args) { Cachorro cachorro = new Cachorro(); cachorro.Nome = "Tom"; Console.WriteLine("Nome: " + cachorro.Nome); Console.ReadLine(); } } } 

Saída

Nome: Tom

A classe derivada implementa a propriedade abstrata, permitindo gerenciamento de estado encapsulado.


Construtores em Classes Abstratas

Classes abstratas podem definir construtores para inicializar estado compartilhado para todas as subclasses. Quando uma instância de subclasse é criada, o construtor da classe abstrata executa primeiro. Exemplo:

using System; namespace AbstractClassDemo { abstract class Animal { public Animal() { Console.WriteLine("Construtor Animal"); } } class Cachorro : Animal { public Cachorro() { Console.WriteLine("Construtor Cachorro"); } } class Program { static void Main(string[] args) { Cachorro c1 = new Cachorro(); Console.ReadLine(); } } } 

Saída

Construtor Animal Construtor Cachorro

Subclasses também podem definir destrutores se lógica de limpeza for necessária.

Nota: Construtores são úteis para configurar recursos comuns requeridos por todos os tipos derivados.


Abstração em C# Através de Classes Abstratas

Classes abstratas fornecem um mecanismo para abstração: elas escondem detalhes de implementação enquanto expõem uma interface limpa. Isso simplifica sistemas complexos focando no "o quê" em vez do "como".

Considere uma analogia do mundo real: sistemas de freio em motocicletas. O comportamento externo do freio — desacelerar ou parar a moto — é consistente, mas o mecanismo subjacente varia entre modelos. Classes abstratas permitem que cada modelo implemente sua lógica de frenagem única sem alterar o contrato externo.

Exemplo: Freios de Motocicleta

using System; namespace AbstractClassDemo { abstract class Moto { public abstract void Frear(); } class MotoEsportiva : Moto { public override void Frear() { Console.WriteLine("Freio de Moto Esportiva"); } } class MotoMontanha : Moto { public override void Frear() { Console.WriteLine("Freio de Moto de Montanha"); } } class Program { static void Main(string[] args) { MotoEsportiva e1 = new MotoEsportiva(); e1.Frear(); MotoMontanha m1 = new MotoMontanha(); m1.Frear(); Console.ReadLine(); } } } 

Saída

Freio de Moto Esportiva Freio de Moto de Montanha

Aqui, Moto declara um método abstrato Frear(). Cada classe de moto concreta fornece sua implementação específica, demonstrando polimorfismo.

Nota: Para abstração total — nenhuma implementação base — considere usar interfaces em vez disso.

Linguagem C

  1. Classes e Objetos em C#: Fundamentos para POO Robusta
  2. Entendendo Classes e Métodos Parciais em C#
  3. Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código
  4. Classes e Objetos em C++: Guia Prático de Programação Orientada a Objetos
  5. Funções Amigas e Classes Amigas em C++: Dominando o Controle de Acesso
  6. Classes e Objetos em Java: Guia Prático
  7. Classes e Métodos Abstratos em Java: Guia Completo
  8. Dominando Classes Aninhadas e Internas em Java: Tipos, Exemplos e Boas Práticas
  9. Classes Abstratas em C#: Tutorial Prático com Exemplos de Código
  10. Dominando Java: Entendendo Objetos, Classes e Conceitos Fundamentais de POO