C# HERIDADE MULTIMA

C# HERIDADE MULTIMA

Os programadores podem usar a herança múltipla para construir classes que integram recursos de várias classes e hierarquias. Também é útil quando uma aula infantil deseja combinar vários contratos de classe base. A herança múltipla não é suportada em C# porque os programadores acreditam que acrescenta complexidade excessiva ao idioma, ao mesmo tempo que não fornece benefícios suficientes. Na linguagem de programação C#, as classes só podem herdar de uma classe pai, que é chamada de herança única.

No entanto, as interfaces ou uma combinação de classe e interface podem ser usadas, com a interface (s) sendo seguida pelo nome da classe na assinatura. Este artigo mostra como a herança múltipla pode ser alcançada em C#, utilizando diferentes abordagens.

O que são interfaces C#

A herança múltipla não é viável com as classes, como sabemos, mas é possível com interfaces quando a palavra -chave interface é usada. A interface fornece apenas as definições de métodos, propriedades, eventos e indexadores, mas não fornece nenhuma implementação de código. Não podemos adicionar modificadores de acesso aos membros da interface, pois eles são implicitamente públicos e abstratos. Variáveis, membros constantes, construtores, destruidores e membros estáticos não são permitidos em uma interface.

Importância das interfaces C#

Uma interface não é a mesma que uma classe. Ele só tem assinaturas de método. Não pode ser criado, pois não tem nenhuma implementação. As classes derivadas dele oferecem a lógica de implementação. Uma interface é frequentemente considerada uma classe abstrata pura. No entanto, a utilização de uma interface em vez de uma classe abstrata tem a vantagem de apoiar a herança múltipla.

Como implementar interfaces para C# Herança múltipla

Na linguagem C#, existem inúmeras abordagens para alcançar a funcionalidade de herança múltipla. Para conhecer o básico do uso de interfaces para implementar várias heranças, temos alguns programas nas seguintes ilustrações:

Exemplo #1: Implementando a herança de várias classes

Estamos tentando implementar a herança múltipla na aula seguinte. Inicialmente, tentamos herdar as propriedades da primeira classe dos pais e da segunda classe dos pais na classe infantil. No entanto, o compilador lançará o erro de tempo de execução, pois C# não suporta a herança de várias classes diretamente.

Incluímos as bibliotecas de sistemas no início do código. Depois disso, criamos uma classe pai, "frutas" e também definimos um método da classe como "myfruits". No método "MyFruits", criamos uma lista como "Mylist" e adicionamos itens diferentes à lista, utilizando o método ADD. O loop foreach é usado para iterar sobre cada item da lista e atribuir os itens da lista a uma nova variável, "elementos". Em seguida, criamos outra classe pai, “frutcolors” e fornecemos o método “cores” para implementação. Também adicionamos os itens na lista da classe “cores”, como na aula anterior.

Agora, temos uma classe infantil chamada "FruitDetails", e esta classe infantil herda as duas classes de pais dadas. No final, temos a classe principal “getDetails”, na qual temos um método principal, e criamos o objeto da classe infantil “FruitsDetails” no método principal. Esses objetos invocam o método da classe pai aqui, o que causará ambiguidade no código.

No tempo de compilação, o programa acima gera uma exceção de que "as classes não podem ter várias classes base", como mostrado na imagem a seguir:

Exemplo #2: Implementando interface para herança múltipla

Embora C# não implemente várias heranças com classes, podemos alcançá -lo usando interface. Embora as interfaces forneçam abstração completa, elas não conseguem incluir métodos específicos.

No código anterior, construímos a interface com a palavra -chave "interface" e a interface recebe o nome "interface1". Nós apenas criamos um método "nomes" e nada mais na interface. Em seguida, definimos uma classe pai, "aluno", para a qual criamos uma interface. Na classe pai, fornecemos a implementação para o método "nomes". No método "nomes", temos uma lista de matrizes representadas como uma "lista" em que adicionamos nomes aleatórios usando o método Add. A linha de gravação imprime os elementos da lista. O loop foreach é usado aqui para iterar sobre cada elemento da lista com a ajuda da variável recém -criada "valores".

Em seguida, criamos outra interface, "interface2", para a segunda classe dos pais. A interface tem apenas o método "sujeitos". Temos nossa segunda classe pai, que implementa o método da interface "sujeitos". Em seguida, adicionamos os elementos da lista como na primeira classe dos pais. Em seguida, temos a classe infantil "Detalhes", que herda as duas interfaces especificadas, "Interface1" e "Interface2". Na classe infantil, criamos os objetos para as classes pais e acessamos os métodos "nomes" e "sujeitos" diretamente usando esses objetos. Os métodos "nomes" e "assuntos" não são modificados, pois as interfaces são herdadas pela classe infantil. No final do código, temos uma classe principal, "Demo", para declarar os objetos da classe infantil e exibir os resultados.

A seguir, são apresentados os resultados que obtemos da implementação de herança de várias classes usando interfaces:

Exemplo #3: A implementação da interface herda outra interface

A herança de uma interface para outra interface é possível em C#. Quando uma classe define uma interface herdada, ela deve implementar todos os membros declarados dentro da cadeia de herança. Observe que, se uma classe usa uma interface, todos os métodos fornecidos por essa interface devem ser implementados junto com os métodos de interface base. Caso contrário, um erro é lançado pelo compilador. Quando uma interface derivada e uma base são especificadas, o nome do membro da interface derivada oculta o nome do membro da interface base.

No código anterior, declaramos uma interface "livros" e criamos um método "book_no" na interface. Observe que não definimos um método com nenhum especificador de acesso. Por padrão, os métodos de interface são públicos. Se atribuirmos algum especificador de acesso a ele, o compilador lança um erro. Em seguida, implementamos outra interface, "Detalhes", que herda a interface "livros". Também temos um método para esta interface. A classe é criada com o nome "autor", para o qual implementamos as interfaces anteriores. A classe apenas herda a interface "detalhes", mas nós herdamos métodos de ambas as interfaces aqui. No final, definimos uma classe de motorista “demonstração”, na qual criamos um objeto para o “autor” da classe e chamamos esses objetos para acessar os métodos de classe “autor”. Então, passamos os valores para esses métodos.

A seguir, é apresentada a saída que obtemos da herança da interface para outra interface:

Conclusão

Discutimos o conceito de herança múltipla em C#. E sabemos que em C, apenas a herança única é permitida, embora a herança múltipla possa ser realizada utilizando simultaneamente uma ou mais interfaces. Temos uma definição clara da interface junto com sua importância. Também implementamos a interface no código de exemplo para demonstrar como a interface pode ser usada em C#. Além disso, a utilização de interfaces é muito útil, pois escondem a implementação de uma classe do mundo exterior. Agora, espero que você tenha aprendido sobre a herança múltipla em C#. Mais tópicos relacionados sobre C# estão disponíveis na dica do Linux.