O que é classe abstrata em C #?
A classe abstrata nunca pode ser instanciada e é marcada pela palavra-chave abstract. Uma classe abstrata contém zero ou mais métodos abstratos. A classe abstrata atua como uma classe base e é projetada para ser herdada por subclasses que implementam ou substituem seu método.
Vamos aprender a classe abstrata em C # com o exemplo fornecido a seguir. Abaixo está a definição de uma classe chamada 'Animal'. Quando a classe 'Animal' é definida, nada se sabe sobre o animal, seja um cachorro ou um gato. O método chamado descrição é apenas um método genérico definido para a classe.
Agora, quando sabemos o que exatamente o Animal vai ser, criamos outra classe que herda a classe base. Se sabemos que o animal é de fato um Cachorro, criamos a classe Cachorro que herda a classe base principal. A principal diferença aqui é que a classe Dog não pode alterar a definição do método Description da classe Animal. Ele tem que definir seu próprio método abstrato C # chamado Dog-Description. Este é o conceito básico das classes abstratas C #.
Vamos ver a classe abstrata em C # com um exemplo em tempo real sobre como podemos alterar nosso código para incluir uma classe abstrata C #. Observe que não executaremos o código, porque não há nada que possa ser executado usando uma classe de abstração C #.
Etapa 1) Como primeira etapa, vamos criar uma classe abstrata. A aula se chamará Tutorial e terá apenas um método. Todo o código precisa ser escrito no arquivo Program.cs.
Explicação do código: -
- Primeiro definimos a classe abstrata. Observe o uso da palavra-chave abstract. Isso é usado para denotar que a classe é uma classe abstrata.
- Em seguida, estamos definindo nosso método que não faz nada. O método deve ter a palavra-chave chamada virtual. Isso significa que o método não pode ser alterado pela classe filha. Este é um requisito básico para qualquer classe abstrata.
Etapa 2) Agora vamos adicionar nossa classe filha. Este código é adicionado ao arquivo Program.cs.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{abstract class Tutorial{public virtual void Set(){}}class Guru99Tutorial:Tutorial{protected int TutorialID;protected string TutorialName;public void SetTutorial(int pID,string pName){TutorialID=pID;TutorialName=pName;}public String GetTutorial(){return TutorialName;}static void Main(string[] args){Guru99Tutorial pTutor=new Guru99Tutorial();pTutor.SetTutorial(1,".Net");Console.WriteLine(pTutor.GetTutorial());Console.ReadKey();}}}
Não há nada de excepcional neste código. Nós apenas definimos uma classe chamada 'Guru99Tutorial' que herda a classe abstrata Tutorial. Em seguida, definimos os mesmos métodos que usamos anteriormente.
Nota: Aqui não podemos alterar a definição do método Set que foi definido na classe Tutorial. Na classe Tutorial, definimos um método chamado 'Set' (public virtual void Set ()). Como o método fazia parte da classe abstrata C #, não temos permissão para definir o método Set novamente na classe Guru99Tutorial.