Classe C# abstrato

Classe C# abstrato

Uma classe abstrata lida com o processo de abstração. É um fenômeno no qual os detalhes de qualquer método estão ocultos e apenas a funcionalidade é mostrada. Não é uma implementação completa. Não podemos instanciar diretamente uma classe abstrata; Pode ser criado sem usar um método abstrato. O objetivo elementar de uma classe abstrata é oferecer um guia para todas as classes derivadas herdadas por ela.

A sintaxe para classe abstrata:

Classe abstrata amostra

Uma palavra -chave 'abstrata' é utilizada para gerar uma classe abstrata. Considerando que, no caso de uma função abstrata, ele contém ninguém apenas declarado dentro da classe. Um método abstrato é usado dentro do derivado, ou você pode dizer em todas as classes não abstracas usando uma palavra-chave 'substituição'. Usando essa palavra -chave, um método abstrato não está no estado de abstração; pode ser usado como uma função regular. Uma classe derivada que é o filho da classe abstrata pode substituir os mesmos métodos abstratos.

A sintaxe para um método abstrato:

Resumo público Void SMP ();

Estrutura de uma classe abstrata

Uma classe abstrata é usada principalmente no processo de herança. As estruturas não podem substituir nenhuma classe abstrata. Uma classe abstrata não é a favor de múltiplas heranças. Da mesma forma, uma classe abstrata não pode ser declarada como uma classe estática, pois uma classe estática não pode ser derivada.

Exemplo 1

Para implementar o conceito de uma classe abstrata, criamos um programa de amostra. Em que usamos uma amostra de classe com a palavra -chave Resumo. Dentro da classe, um método abstrato é declarado. A classe abstrata sempre tem um método abstrato.

Classe abstrata pública amostra ()
Abstrato público void smp] ();

Como definimos apenas a funcionalidade dos métodos abstratos dentro da classe abstrata, em vez de explicar o funcionamento das funções; portanto, apenas o cabeçalho da função é declarado aqui.

Uma classe abstrata não pode ser acessada diretamente porque não criamos um objeto dela; Diz-se que é uma classe fictícia ou uma classe não ativa até que se torne ativa criando um objeto da classe derivado dela. Então, direcionaremos a amostra da classe da classe abstrata de base amostra. Esta classe não é abstrata. A aula de amostra é herdada na classe infantil amostra1. A maneira de representar uma classe inerente da classe base é usar o nome da classe pai com um sinal de cólon em frente à classe derivada. Aqui a amostra1 é uma classe derivada.

# Classe Public Sample1: Amostra

Quando herdamos uma classe da classe abstrata, ela pode usar os recursos e os métodos presentes dentro da classe abstrata. Por exemplo, o método smp () pode ser declarado na classe Sample1, mas não com o nome de abstrato porque não é mais uma classe abstrata. Está escrito com a palavra -chave 'substituição' para descrever que é herdada de uma classe abstrata. Uma declaração simples é exibida dentro do programa.

# Substituição pública void smp ()

Da mesma forma, outra amostra de classe é herdada da amostra de classe. E também usa o método de substituição SMP (). Para inicializar a classe abstrata, não criaremos um objeto para isso. Mas a instância da classe derivada ou infantil será instanciada. A classe abstrata se tornará automaticamente ativa e pode ser acessada facilmente criando o objeto.

# Amostras s;

'S' é o objeto da classe de amostra; é criado, mas não é instanciado.

# S = new Sample1 ()

Esta criação dinâmica instanciará a classe Sample1 usando um operador 'novo'. Agora vamos acessar a função declarada dentro da classe abstrata através deste objeto.

Da mesma forma, o mesmo objeto para a classe Sample2 será criado. E então, chamaremos a função da classe pai. Quando instanciamos o objeto para a classe, nós o usaremos para a chamada de função na próxima etapa, tornando -o imediatamente especificado para a função usada dentro da classe.

Salvar o código; Vamos executá -lo no terminal Ubuntu, usar o compilador MCS para compilar o código e mono para executá -lo.

Arquivo de $ mcs.cs
$ MONO FILE.exe

Na execução, você pode ver que ambos os valores dentro das funções são exibidos.

Exemplo 2

Ao usar uma classe abstrata, calcularemos agora a área. Portanto, uma classe abstrata para a área é criada, na qual um método abstrato para a área será definido.

Classe abstrata AreaClass
Resumo Public Int Area ();

Um quadrado de classe derivado será herdado da classe base. Isso calculará a área usando o método abstrato dentro dele. Primeiro, uma variável é declarada para obter o número do programa principal.

# Classe Square: AreaClass

Um construtor é criado para atribuir o valor enviado do programa principal. Então a função será substituída da classe abstrata. Este método calculará a área do quadrado multiplicando os dois lados.

Crie outra classe para declarar o programa principal. Aqui, o objeto para a classe infantil é criado e será instanciado, pois precisamos enviar o número ao construtor da classe quadrada para criar o objeto.

# Quadrado s = novo quadrado (15);

Ao usar o mesmo objeto, a função será chamada.

s.Área ();

O console imprimirá a área calculada pela função.

Exemplo 3

A classe abstrata não precisa conter todos os métodos abstratos. Mas também, métodos não abstratos podem ser declarados em uma classe abstrata. Usamos o exemplo abaixo para elaborar este conceito. Crie uma classe abstrata. Uma função simples é criada e está em um estado totalmente funcionado, pois aceita os parâmetros enviados a ele a partir da chamada de função e retorna a soma de ambos os números.

# Public int sum (int num1, int num2)

Após a declaração da função regular, um método abstrato é definido, mas seu corpo não é declarado aqui, pois é uma função abstrata.

# Public Resumo Int multiply (int num1, int num2)

Após a classe abstrata, criaremos uma classe derivada que herdará a função abstrata da multiplicação.

Classe Derivada: AbstractClass
Substituição pública Int multiply (int num1, int num2)

Esta função multiplicará os dois valores e depois retornará a resposta.

Agora vamos criar um programa principal para criar o objeto.

Derivado d = new derived ();
d.soma (20, 8);
d.multiplicar (20, 8);

Conclusão

Uma classe abstrata em C Sharp é criada para ocultar as informações definindo apenas o cabeçalho da função. Esta classe abstrata não é funcional até que outra classe infantil seja derivada através dela. Uma classe abstrata é usada em herança; Caso contrário, a declaração de uma classe abstrata é inútil. Devido à herança, acessamos -a criando e instantando o objeto para a classe infantil. Não é obrigatório que uma classe abstrata tenha todos os métodos abstratos dentro dela. Explicamos o trabalho e a declaração de uma classe abstrata usando alguns exemplos e implementando -os no Ubuntu.