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 amostraUma 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 ()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: AmostraQuando 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.csNa 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 AreaClassUm 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: AreaClassUm 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: AbstractClassEsta 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 ();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.